【发布时间】:2013-03-25 18:26:38
【问题描述】:
我有一个 JAX-WS Web 服务应用程序,它部署为 Tomcat 7 的 WAR 文件。它使用了最新版本的 Metro 库,我将其包含在 WAR 文件中,并且运行良好。
我正在尝试简化部署包。我知道 Sun JDK 包含 Metro 的副本(例如,请参阅 this question 和 this one),但出于某种原因,显然必须用从 glassfish 站点下载的 Metro 副本替换此副本。我试图了解是否可以仅使用 Tomcat 和 JDK 附带的 Metro 实现,或者如果不能,为什么不这样做。
WAR的内容如下(类文件去掉):
META-INF/MANIFEST.MF
WEB-INF/classes/
WEB-INF/classes/com/[et cetera]
WEB-INF/ibm-web-ext.xml
WEB-INF/lib/
WEB-INF/lib/stax-api.jar
WEB-INF/lib/webservices-api.jar
WEB-INF/lib/webservices-extra-api.jar
WEB-INF/lib/webservices-extra.jar
WEB-INF/lib/webservices-rt.jar
WEB-INF/lib/webservices-tools.jar
WEB-INF/sun-jaxws.xml
WEB-INF/web.xml
wsdl/
wsdl/MyService.wsdl
web.xml 部分包含:
<servlet>
<servlet-name>MyService</servlet-name>
<servlet-class>
com.sun.xml.ws.transport.http.servlet.WSServlet
</servlet-class>
</servlet>
当我从 WAR 中删除 webservices-* jars-- Metro jars--时,web 服务失败并出现错误“Wrapper cannot find servlet class com.sun.xml.ws.transport.http.servlet.WSServlet或它所依赖的类”。这并不奇怪,因为我在 Java 7 SE 附带的 jar 中的任何地方都找不到该类。
那么,如果您必须下载另一个 Metro 副本才能使类似的东西工作,那么说 Java 7 附带 Metro 意味着什么?是否可以仅使用 Java 附带的 jar 在 Tomcat 中运行 JAX-WS Web 服务?
【问题讨论】:
标签: java web-services tomcat jax-ws java-metro-framework