目前我正在评估 Java 中的 Web 服务框架的数量。我需要 Web 服务框架来帮助我公开在 JBoss 上运行的现有应用程序的一些功能,该应用程序主要使用 Spring 和 POJO(无 EJB)开发。
我需要的是一个具有以下属性的框架:
- 它应该提供自动生成样板代码的工具,并通过消除重复性任务来节省时间,例如从 Java (java2wsdl) 生成 WSDL 的工具、生成端点的工具等。
- 应用程序应该很容易部署在现有的J2EE平台(JBoss)上,这意味着它应该包含尽可能少的配置文件(如axis2框架中的axis2.xml)。
- 此外,最好能够在现有应用程序的 .war 存档中部署 Web 服务。 (似乎 Axis2 需要一个单独的 Web 服务应用存档。)
- 结合使用 POJO 和 Spring 会很酷。
- 一般来说,框架应该具有简洁的结构和设计(例如 Spring-WS 缺少它)、良好的文档以及任何其他可以作为一款优秀软件的特征。
- 框架最好包含一些标准功能,如 JAX-WS 等,而不是供应商特定的方法。
我已经简单检查了
- 轴 2
- Apache CXF
- 和 Sun 的地铁
- Spring WS
但仍然很难决定在我的情况下使用什么:
- Axis2 似乎太低级了,它需要单独的应用程序存档和大量配置
- Spring WS 似乎太不透明,而且“对于印象目的来说太复杂了 (?)”
- Apache CXF 和 Metro 可能是我更喜欢选择的两个框架,但仍然是
我需要您对其中一些在实际应用程序中的使用提出意见和经验。
最佳答案
我已经使用 CXF 的前身 XFire 有一段时间了,感觉还不错。当时,我们从 Axis 迁移的主要原因有两个:性能和易于开发。在当时(不知道现在是不是这样),XFire 的性能比市面上的任何东西都要好得多,并且通过注释驱动的开发,不必运行 stub 生成,添加新的真的很容易网络服务。
CXF 似乎更加相同但更好 - 由于开发时间的限制以及没有迫切的理由这样做(加上 6-12 个月前相对缺乏文档是不太令人鼓舞)。此外,我最近还没有真正评估过市场,所以我无法告诉你 CXF 如何与当代竞争对手抗衡。
关于你的观点:
- 无需生成样板代码,WSDL 由服务类的注释自动创建并由服务器发布。
- 在 Tomcat 中的部署相对简单。只需在 web.xml 中定义另一个 servlet 并将 URL 模式映射到该 servlet。
- 我们的 Web 服务部署在 WAR 文件中,我不确定实际上有哪些替代方案,但这似乎是默认且显而易见的方式。
- POJO 最初运行良好;我们现在已经将大部分 Web 服务对象的创建移到 Spring 中,以便在其中连接更复杂的条件依赖项,并且没有遇到任何问题。
- 文档最初是 CXF 的一个弱点,尽管刚刚看过它现在似乎更好。总体设计和架构似乎相对健全。插入自己的过滤器来修改传输细节并不是很痛苦,并且通常考虑扩展现有类(例如,明智的方法被标记为 protected 而不是私有(private))。
- CXF 完全支持 JAX-WS。
所以我可能有点不偏不倚,因为我没有尝试过其他的,但我会竖起大拇指看看 CXF。如果您需要调整它,它非常快、相对简单并且相当强大。
关于Java Web Service 框架/库,哪个更好,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/442582/