【问题标题】: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】:
一种可能的工作流程是:
- 重构您的 Web 应用,以便业务逻辑在单独的方法中实现,
doPost() 和 doGet() 仅调用这些方法。
- 从 Web 应用类中提取业务方法的接口。
- 运行
java2wsdl,将上述接口及其相关类型转换为WSDL规范。
- 使用服务器端绑定运行
wsdl2java 以生成骨架类和其他辅助工具。
- 将骨架类替换为原始Web应用类(或将相关方法从Web应用复制到骨架类)。
- 删除多余的
doPost()和doGet()方法,删除旧的网络应用。
瞧!您有一个 Axis2/Tomcat Web 服务。它需要一些重构,但不改变核心逻辑。
【解决方案2】:
- 将
@WebService 注解添加到您的Java 类中。
- 将
@WebMethod 添加到您希望公开为 Web 服务操作的方法中。
- 在 web.xml 文件中添加特定于框架的 servlet 和过滤器映射。例如,对于 Sun RI f/w,它是
WSServlet。 Axis 肯定也有类似的东西。
- 编写一个 WSDL 文件,或从您拥有的 Java 类生成它。您可以使用 wsgen [适用于 Sun RI] 之类的工具。它是 Axis 的 java2wsdl。
- 添加所需的 Web 描述符文件。对于 Axis,通常是
wsdd 文件,对于 Sun RI,通常是 sun-jaxws.xml 文件。