【问题标题】:how to deploy a jax-ws service to eclipse or tomcat?如何将 jax-ws 服务部署到 eclipse 或 tomcat?
【发布时间】:2011-03-13 12:14:41
【问题描述】:

作为一个 web 服务初学者,我已经尝试了 2 周来获得一个与 maven、eclipse 和 tomcat 一起使用的 hello world webservice。

我放弃了尝试让任何代码/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 jars + 神秘配置?

我不想安装到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 网络服务系统,是否值得一试?

非常欢迎任何建议。我必须用谷歌搜索 1000 页来搜索网络服务圣杯 - 即如何创建和部署一个端到端的 tomcat。应该这么难吗?

【问题讨论】:

    标签: java web-services jax-ws cxf


    【解决方案1】:

    看看https://glenmazza.net/blog/entry/web-service-tutorial。它是 CXF 和 Metro 的完整分步指南。 Tomcat 用于部署,还有 maven 和 ant 版本,以防您更喜欢一种组织项目构建的选项。

    【讨论】:

    • 添加了来自作者博客的更新鲜的链接。似乎现在专注于 CXF
    【解决方案2】:

    将此片段添加到您的 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库

    【讨论】:

      【解决方案3】:

      我知道这是陈词滥调,但听起来您正在尝试重新发明轮子。有 Axis2 和 CXF 之类的东西是有原因的。他们为你做了很多艰苦的工作。我已经使用了这两种方法并取得了很大的成功。请记住,我是根据有限的个人经验发言。

      我发现 CXF 和 Spring 可以很容易地设置契约优先的 JAX-WS 服务,甚至添加 WS-Security、消息记录、模式验证和 HTTP 配置设置。主要使用 Spring XML 配置文件完成。我还了解到 Spring 可以与 Quartz 一起使用来安排作业和管理您的数据访问。这是一个非常方便的工具。

      Axis2,虽然我已经有一段时间没有使用它了,但我记得它可以很容易地将一些 POJO 转换为服务,而无需付出任何努力。

      我对 Metro 的唯一体验是我使用 NetBeans 创建并在内置 Glassfish 服务器上运行它的一个小测试服务。这很容易,但是 IDE 为您做了很多工作,这可能不是一个好的学习方法。感觉就像只需要点击几下鼠标,突然之间就有了一项服务。

      this question 也有点相关。

      祝你好运!

      【讨论】:

        猜你喜欢
        • 2010-12-16
        • 1970-01-01
        • 1970-01-01
        • 2015-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-13
        相关资源
        最近更新 更多