作为网络服务的初学者,我已经尝试了 2 周来获得一个与 maven、eclipse 和 tomcat 一起工作的 hello world 网络服务。
我放弃了让任何代码/wsdl 生成器工作的尝试,我遵循了本教程 http://myarch.com/create-jax-ws-service-in-5-minutes编写一个示例,非常棒。
这会产生 4 个类文件和一个 WSDL 文件。
所以我的愚蠢问题是如何在 eclipse 和/或 tomcat 上“运行”该服务?
我尝试将它们部署为 Web 应用程序,但没有任何乐趣 - web.xml 中没有任何内容告诉 servlet 引擎 Web 服务存在,所以我猜它永远无法工作。
我是否必须在 tomcat 中有一个特殊的 Web 服务容器(例如 axis2、metro 或 CXF)并部署到它?或者它可以只使用一些 jax-ws jar + 神秘配置运行吗?
我不想安装到 tomcat metro(使用 ant,专为 glassfish 而设计)或 axis2(使用 ant,大多数人似乎不推荐)。
我查看了 CXF,但在他们的站点上找不到任何关于如何在没有 spring 的情况下在 tomcat(或 eclipse)上安装/配置它的信息。我将 CFX jar 放在 maven 依赖项中,并安装了 eclipse 插件,但这并没有让你更接近实际运行一个没有神秘配置胶水的 web 服务。 CXF 似乎与 spring 联系在一起,这对我们来说是一个很大的缺点,因为我们不使用 spring(或不需要它的任何功能)。
我注意到 helios wtp 有某种名为 JSR-109 的 Web 服务项目。这个 java RPC 是唯一的,还是支持完整的 SOAP web 服务系统,是否值得尝试弄清楚?
非常欢迎任何建议。我必须用谷歌搜索 1000 页来寻找网络服务 chalice ——即如何创建一个端到端的 tomcat 并将其部署到端到端。有这么难吗?
最佳答案
将此片段添加到您的web.xml 文件
<servlet>
<servlet-name>wshello</servlet-name>
<servlet-class>
com.sun.xml.ws.transport.http.servlet.WSServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>wshello</servlet-name>
<url-pattern>/webservice</url-pattern>
</servlet-mapping>
然后创建一个名为sun-jaxws.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="WebServiceTest"
implementation="your.webservice.impl.ClassName"
url-pattern="/webservice"/>
</endpoints>
然后像往常一样创建一个war文件。您不需要 CXF 或 Axis 即可将基本 WebService 部署到 Tomcat 中。 顺便说一句,jax-ws 库 jars(jaxws-api.jar、jaxb-impl.jar 等)应该在您的类路径中。您可以从 here 下载 jax-ws 库
关于java - 如何将 jax-ws 服务部署到 eclipse 或 tomcat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3206681/