Java Web Service 框架/库,哪个更好,为什么?

标签 java web-services spring jakarta-ee frameworks

目前我正在评估 Java 中的 Web 服务框架的数量。我需要 Web 服务框架来帮助我公开在 JBoss 上运行的现有应用程序的一些功能,该应用程序主要使用 Spring 和 POJO(无 EJB)开发。

我需要的是一个具有以下属性的框架:

  1. 它应该提供自动生成样板代码的工具,并通过消除重复性任务来节省时间,例如从 Java (java2wsdl) 生成 WSDL 的工具、生成端点的工具等。
  2. 应用程序应该很容易部署在现有的J2EE平台(JBoss)上,这意味着它应该包含尽可能少的配置文件(如axis2框架中的axis2.xml)。
    • 此外,最好能够在现有应用程序的 .war 存档中部署 Web 服务。 (似乎 Axis2 需要一个单独的 Web 服务应用存档。)
    • 结合使用 POJOSpring 会很酷。
    • 一般来说,框架应该具有简洁的结构和设计(例如 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 如何与当代竞争对手抗衡。

关于你的观点:

  1. 无需生成样板代码,WSDL 由服务类的注释自动创建并由服务器发布。
  2. 在 Tomcat 中的部署相对简单。只需在 web.xml 中定义另一个 servlet 并将 URL 模式映射到该 servlet。
  3. 我们的 Web 服务部署在 WAR 文件中,我不确定实际上有哪些替代方案,但这似乎是默认且显而易见的方式。
  4. POJO 最初运行良好;我们现在已经将大部分 Web 服务对象的创建移到 Spring 中,以便在其中连接更复杂的条件依赖项,并且没有遇到任何问题。
  5. 文档最初是 CXF 的一个弱点,尽管刚刚看过它现在似乎更好。总体设计和架构似乎相对健全。插入自己的过滤器来修改传输细节并不是很痛苦,并且通常考虑扩展现有类(例如,明智的方法被标记为 protected 而不是私有(private))。
  6. CXF 完全支持 JAX-WS。

所以我可能有点不偏不倚,因为我没有尝试过其他的,但我会竖起大拇指看看 CXF。如果您需要调整它,它非常快、相对简单并且相当强大。

关于Java Web Service 框架/库,哪个更好,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/442582/

相关文章:

java - 如何在 SQLite 数据库中验证和添加新用户?

java - java支持多重调度吗?如果不是,下面的代码如何工作?

web-services - Indy IdHTTPServer GET 响应参数随机丢失

java - 当我尝试使用 Spring 和 JPA 登录时出错?

java - 如果程序设计正确,为什么有人会覆盖方法?

java - 角色交换

web-services - SOAP UI 不适用于 https 请求 (java.security.cert.CertificateException : Certificates does not conform to algorithm constraints)

java - Web服务不接受 postman 的获取请求

java - 了解spring @Configuration 类

javascript - 如何使用for循环在js中获取ModelAndView对象?