2016-04-30 2 views
1

Ich versuche, einen Web-Service für zwei Endpunkte zu implementieren und diesen Fehler "404 Not Found: Ungültige Anforderung" beim Versuch, den Dienst nach der Bereitstellung auf dem Apache Toncat zuzugreifen versucht 8.JAX-WS mehrere Endpunkte nicht gefunden: Ungültige Anfrage

Im Folgenden meine Web-Service-Implementierungsklassen sind, sonnen jaxws.xml und web.xml

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 ein

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 "; 
    } 
} 

sonnen 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

<?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

bitte auch die vollständig qualifizierten URI für den Zugriff (diejenigen, die in 404 geführt) verwendet hinzuzufügen, z.B. http: // localhost: 8080/mywebapp/impl1 –

Antwort

4

den genauen Code geliefert (plus die JAX-WS RI Gläser aus https://jax-ws.java.net/ heruntergeladen), war ich in der Lage, eine Webanwendung zu erstellen und erfolgreich auf die Serviceendpunkte /impl1 und /impl2 zuzugreifen. Beachten Sie, dass die Anweisungen <url-pattern> und <endpoint ... url-pattern="/impl1"> den Ressourcenpfad zu den JAX-WS-Endpunkten im Kontextpfad der einschließenden Webanwendung angeben.

Also, wenn der Name des Webapp ist MyWebServices (MyWebServices.war ohne anderen Dateien/Code als in der Post beschrieben, eingesetzt, um Tomcat 8) und Sie haben <url-pattern>/impl1</url-pattern> in web.xml, und mit einer Standard-Tomcat-Instanz auf Port 8080 Ihre Web-Service-Endpunkt http://localhost:800/MyWebServices/impl1 mit dem WSDL verfügbar über http://localhost:800/MyWebServices/impl1?wsdl

Wenn Sie die Techniken Ihrem Kontext anpassen möchten Pfad Ihrer Webapp (zB Sie wollen nicht /MyWebServices/... Sie können in this SO question beschrieben verwenden würde.

Für Beispiel le, mein lokaler Tomcat 8 läuft auf Port 8081:

enter image description here

Verwandte Themen