我曾经看过关于这个主题的tutorial。但是当我尝试按照示例创建我的示例应用程序时。我在类路径上找不到com.sun.xml.ws.transport.http.servlet.WSServletContextListener
。
但我发现com.sun.xml.internal.ws.transport.http.servlet.WSServletContextListener
它让我感到困惑,为什么Oracle将com.sun.xml.xxx
中的这些类移到com.sun.xml.internal
?我使用的是JDK1.6.0_45。我看到有人说,从JDK6U4开始,jax-ws参考实现被捆绑在JDK中,所以我们应该能够通过运行一个轻量级的http服务器来发布一个Web服务,只需要JDK而不需要其他依赖项,这是真的吗?您应该注意到,在上面提到的教程中,仍然需要其他依赖项,请参阅步骤5和#34; JAX-WS依赖项"。
我还发现,在IBM JDK中,甚至找不到com.sun.xml.internal.ws.transport.http.servlet.WSServletContextListener
。
答案 0 :(得分:1)
是的,自Jdk6以来,JAX-WS RI(与JAX-B RI相同)随JDK一起提供。除了javax.xml。*之外的所有包都更改为 .internal。,以避免JDK和独立的JAX-WS版本之间发生冲突。
使用JDK的版本,您只需使用JDK即可部署Web服务;如果要在tomcat或某些AS中部署WS,则仍需要JAX-WS独立版本。
答案 1 :(得分:0)
如果你检查(non-internal) WSServletContextListener的grepcode,它会告诉你,该类附带了jaxws-rt / webservice-rt jar。
通过查找internal WSServletContextListener,您无法找到运送它的罐子。 (但grepcode还包含openJDK的来源)
另外,我试图在我的本地jdk7中找到WSServletContextListener,但找不到它。但是也许有一些第三方jdk与这班船一起出货。
无论如何,如果你再次查看教程,你会发现jaxws-rt.jar是应用程序的必要条件。你应该添加它吗?