要在 Tomcat 中支持 JAX-WS,您必须配置:
-
WEB-INF/sun-jaxws.xml
-
WSServletContextListener
-
WSServlet
不幸的是,很难省略 WEB-INF/sun-jaxws.xml 文件,但是由于 Servlet 3.0 API,有更简单的方法可以省略 web.xml 配置。
你可以做这样的事情:
@WebServlet(name = "ServiceServlet" , urlPatterns = "/service", loadOnStartup = 1)
public class Servlet extends WSServlet {
}
和
@WebListener
public class Listener implements ServletContextAttributeListener, ServletContextListener {
private final WSServletContextListener listener;
public Listener() {
this.listener = new WSServletContextListener();
}
@Override
public void attributeAdded(ServletContextAttributeEvent event) {
listener.attributeAdded(event);
}
@Override
public void attributeRemoved(ServletContextAttributeEvent event) {
listener.attributeRemoved(event);
}
@Override
public void attributeReplaced(ServletContextAttributeEvent event) {
listener.attributeReplaced(event);
}
@Override
public void contextInitialized(ServletContextEvent sce) {
listener.contextInitialized(sce);
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
listener.contextDestroyed(sce);
}
}
我已经在Tomcat-8.5.23版本上测试了它,它可以正常工作。但请记住,您仍然必须拥有 WEB-INF/sun-jaxws.xml 文件。
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"
version="2.0">
<endpoint name="SampleService"
implementation="com.ws.ServiceImpl"
url-pattern="/service" />
</endpoints>