2016-04-30 18 views
1

私は2つのエンドポイント用のWebサービスを実装しようと、このエラー を取得しています「404が見つかりません:無効な要求を」Apacheのtoncat上に展開した後のサービスにアクセスしようとしたとき以下は8JAX-WS複数のエンドポイントが見つかりません:無効な要求

WebImplementation1.java

package com.ws.soap.services; 
import javax.jws.WebService; 

@WebService(endpointInterface = "com.ws.soap.services.WebServiceImpl1") 
public class WebServiceImpl1 { 

    public String printMessage() { 
     return "Hello from WebServiceImpl1 "; 
    } 
} 
はWebServiceImplementation2.jav

日-jaxws.xmlとweb.xml

、私のWebサービス実装クラスであります

package com.ws.soap.services; 

import javax.jws.WebService; 

@WebService(endpointInterface = "com.ws.soap.services.WebServiceImpl2") 
public class WebServiceImpl2 { 

    public String displayMessage() { 
     return "Hello from WebServiceImpl2 "; 
    } 
} 

日-jaxws.xml

<?xml version="1.0" encoding="UTF-8"?> 
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" 
    version="2.0"> 
    <endpoint name="WebServiceImpl1" implementation="com.ws.soap.services.WebServiceImpl1" 
     url-pattern="/impl1" /> 
    <endpoint name="WebServiceImpl2" implementation="com.ws.soap.services.WebServiceImpl2" 
     url-pattern="/impl2" /> 
</endpoints> 

web.xmlの正確なコード付属(プラスhttps://jax-ws.java.net/からダウンロードしたJAX-WS RIのjarファイル)を使用して

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <display-name>JAX-WS-Tomcat</display-name> 
    <listener> 
     <listener-class> 
      com.sun.xml.ws.transport.http.servlet.WSServletContextListener 
     </listener-class> 
    </listener> 

    <servlet> 
     <servlet-name>sayhello</servlet-name> 
     <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>sayhello</servlet-name> 
     <url-pattern>/impl1</url-pattern> 
     <url-pattern>/impl2</url-pattern> 
    </servlet-mapping> 

    <session-config> 
     <session-timeout>30</session-timeout> 
    </session-config> 
</web-app> 
+0

も完全修飾URIを追加してください例えば、(404の結果のもの)にアクセスするために使用されますhttp:// localhost:8080/mywebapp/impl1 –

答えて

4

、私がいましたWebアプリケーションを作成してサービスエンドポイント/impl1/impl2に正常にアクセスできるようになりました。 <url-pattern>および<endpoint ... url-pattern="/impl1">ディレクティブは、JAX-WSエンドポイントへのリソースパスを、囲んでいるWebアプリケーションのコンテキストパス内に記述してください。だから、

、Webアプリケーションの名前はMyWebServices(Tomcatの8に展開後の、で説明したよりも他のファイル/コードとMyWebServices.war)であり、あなたがweb.xml<url-pattern>/impl1</url-pattern>を持っており、ポートでリッスン既定のTomcatインスタンスを持つ場合8080 、Webサービスのエンドポイントは、http://localhost:800/MyWebServices/impl1?wsdl

を経由して利用できるWSDLとhttp://localhost:800/MyWebServices/impl1だろう、あなたのWebアプリケーションのあなたのコンテキストパスをカスタマイズしたい場合(例えば、あなたが技術がin this SO questionを説明し使用することができます/MyWebServices/...たくない。

のために例ル、私の地元のTomcat 8は、ポート8081で実行されている:

enter image description here

関連する問題