我正在尝试在Tomcat上部署基于JAX-WS的Web服务时最小化所需的配置。随着Servlet 3.0的引入(由Tomcat 7+支持),可以丢弃web.xml,但是仍然存在sun-jaxws.xml。这个blog post很有趣:



是否可以避免在Tomcat上使用sun-jaxws.xml?如何避免?

最佳答案

可悲的是,配置必须在某处存在。根据消息来源,这是强制性的。信不信由你,在/WEB-INF/sun-jaxws.xml中the location of the sun-jaxws.xml file is hard-coded(谢谢,伙计们@ Metro)。

实际上,您需要控制以下类

  • public final class WSServletContextListener
  • public class WSServlet


  • 需要发生什么:
  • WSServletContextListener显然不会扩展。该侦听器根据sun-jaxws.xml和jaxws-catalog文件执行大多数初始化。就像我之前提到的,该位置是硬编码的。因此,您这里阻力最小的方法是
  • 实现您自己的 Vanilla servlet侦听器(使用@WebListener)并调用new WSServletContextListener()。然后,您将自己的contextInitialized(ServletContext ctxt)contextDestroyed()方法委托(delegate)给WSServletContextListener实例中的方法。
  • 使用将代表sun-jaxws文件的@XmlRootElement类,在侦听器实例化时即时生成文件(我将在很短的时间内提供一个示例,现在没有时间: ))。

  • IMO带来如此麻烦的麻烦,但在理论上应该可行。我将写一些示例,然后看它们如何播放。

    10-05 18:21