我正在尝试为两个端点实现Web服务并收到此错误 在部署到apache toncat 8后尝试访问服务时,“ 404 Not Found:Invalid Request ”。
以下是我的Web服务实现类sun-jaxws.xml和web.xml
WebImplementation1.java
</div>
</div>
</section>
<div class="space80"></div>
<section class="main_content">
<div class="container">
<div class="row">
WebServiceImplementation2.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 ";
}
}
太阳jaxws.xml
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 ";
}
}
的web.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>
答案 0 :(得分:4)
使用提供的确切代码(以及从https://jax-ws.java.net/下载的JAX-WS RI jar),我能够创建一个webapp并成功访问服务端点/impl1
和/impl2
。建议<url-pattern>
和<endpoint ... url-pattern="/impl1">
指令在封闭Web应用程序的上下文路径中声明JAX-WS端点的资源路径。
因此,如果webapp的名称是MyWebServices
(MyWebServices.war
,没有其他文件/代码,而不是帖子中描述的,部署到Tomcat 8),那么<url-pattern>/impl1</url-pattern>
在{ {1}},并且在端口web.xml
上侦听默认的Tomcat实例,您的Web服务端点将为http://localhost:800/MyWebServices/impl1,其中WSDL可通过http://localhost:800/MyWebServices/impl1?wsdl
如果您想自定义网络应用的上下文路径(例如,您不想8080
,则可以使用in this SO question所述的技术。
例如,我的本地Tomcat 8正在端口8081上运行: