2016-04-30 1 views
1

Я пытаюсь реализовать веб-сервис для двух конечных точек и получаю эту ошибку «404 Not Found: Invalid Request», когда пытался получить доступ к сервису после развертывания на апач toncat 8.JAX-WS несколько конечных точки не найдены: Недопустимый запрос

Ниже приведены мои классы реализации веб-службы, ВС-jaxws.xml и 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

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

<?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: // локальный: 8080/mywebapp/impl1 –

ответ

4

Используя точный код поставляется (плюс банки JAX-WS RI загрузить с https://jax-ws.java.net/), я возможность создания webapp и успешного доступа к конечным точкам обслуживания /impl1 и /impl2. Следует иметь в виду, что директивы <url-pattern> и <endpoint ... url-pattern="/impl1"> определяют путь ресурса к конечным точкам JAX-WS в пределах контекстного окружения прилагаемого веб-приложения.

Итак, если имя веб-приложение является MyWebServices (MyWebServices.war без каких-либо других файлов/кода, чем описанные в этой должности, развернутом на сервере Tomcat 8), и вы <url-pattern>/impl1</url-pattern> в web.xml, и с экземпляром Tomcat по умолчанию прослушивает порт 8080 , ваш веб-службы конечная точка будет http://localhost:800/MyWebServices/impl1 с WSDL доступным через http://localhost:800/MyWebServices/impl1?wsdl

Если вы хотите, чтобы настроить свой путь контекста вашего веб-приложение (например, вы не хотите /MyWebServices/... вы можете использовать методы описаны in this SO question.

для examp ле, мой местный Tomcat 8 работает на порт 8081:

enter image description here