【问题标题】:Expose Java class as web service in existing Web App running under Tomcat在 Tomcat 下运行的现有 Web App 中将 Java 类公开为 Web 服务
【发布时间】:2010-11-10 13:11:18
【问题描述】:

我使用 Axis2 创建了一个 Web 服务。而且它非常容易编写、测试和运行。

但现在我已经在 Tomcat 下运行了现有的 Java Web App,我想向它添加 Web 服务。例如。而是处理 POST 和 GET 参数并生成 HTML 我想接收 SOAP 消息,对其进行处理并再次将响应作为 SOAP 消息返回。

哪些技术/框架/库/等。应该用吗?

最好应该像为 Axis2 编写 Web 服务那样简单。

【问题讨论】:

    标签: java web-services tomcat axis2


    【解决方案1】:

    一种可能的工作流程是:

    1. 重构您的 Web 应用,以便业务逻辑在单独的方法中实现,doPost()doGet() 仅调用这些方法。
    2. 从 Web 应用类中提取业务方法的接口。
    3. 运行java2wsdl,将上述接口及其相关类型转换为WSDL规范。
    4. 使用服务器端绑定运行 wsdl2java 以生成骨架类和其他辅助工具。
    5. 将骨架类替换为原始Web应用类(或将相关方法从Web应用复制到骨架类)。
    6. 删除多余的doPost()doGet()方法,删除旧的网络应用。

    瞧!您有一个 Axis2/Tomcat Web 服务。它需要一些重构,但不改变核心逻辑。

    【讨论】:

      【解决方案2】:
      1. @WebService 注解添加到您的Java 类中。
      2. @WebMethod 添加到您希望公开为 Web 服务操作的方法中。
      3. 在 web.xml 文件中添加特定于框架的 servlet 和过滤器映射。例如,对于 Sun RI f/w,它是 WSServlet。 Axis 肯定也有类似的东西。
      4. 编写一个 WSDL 文件,或从您拥有的 Java 类生成它。您可以使用 wsgen [适用于 Sun RI] 之类的工具。它是 Axis 的 java2wsdl
      5. 添加所需的 Web 描述符文件。对于 Axis,通常是 wsdd 文件,对于 Sun RI,通常是 sun-jaxws.xml 文件。

      【讨论】:

        【解决方案3】:
        • 如果要添加新的 Web 服务,可以使用 Axis 2 将其添加到现有的 Web 应用程序

        • 如果您想使用现有的特性(功能),首先您需要重构您的 Web 应用程序并将业务逻辑提取到新方法中。然后用@WebService注解类和接口。如果你想隐藏一些在 Web 服务中暴露的方法,那么用 @WebMethod(exclude=true) 注释这些方法

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-25
          • 1970-01-01
          • 1970-01-01
          • 2015-09-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多