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

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

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

  1. 它应该提供自动生成样板代码的工具,并通过消除重复性任务来节省时间,例如从Java生成WSDL的工具(java2wsdl),生成端点的工具等。
  2. 应用程序应该可以轻松部署在现有的J2EE平台(JBoss)上,这意味着它应该包含尽可能少的配置文件(如axis2框架中的axis2.xml)。
    • 此外,最好能够在现有应用程序的.war存档中部署Web服务。 (似乎Axis2需要一个单独的存档用于Web服务应用程序。)
    • 使用POJOSpring的组合将非常酷。
    • 通常,框架应该具有干净的结构和设计(例如Spring-WS缺少它),良好的文档以及其他任何表征好软件的特征。
    • 框架最好包含一些标准function,如JAX-WS等,而不是供应商特定的方法。

我简要地检查了一下

  • Axis2的
  • Apache CXF
  • 和Sun的地铁
  • springWS

但仍然很难决定在我的情况下使用什么:

  • Axis2似乎是如此低级别,它需要单独的应用程序存档和许多配置
  • Spring WS似乎太不透明了,“为印象目的而精致(?)”
  • Apache CXF和Metro可能是两个框架,我更喜欢从中选择,但仍然如此

我需要您对在实际应用程序中使用其中一些内容的意见和经验。

我已经使用了CXF的先行者XFire,现在已经有一段时间了,这并不算太糟糕。 当时,我们从Axis迁移有两个主要原因:性能和易开发性。 当时(不知道现在是否真的如此),XFire的性能远远超过其他任何东西,并且通过注释驱动的开发,而不是必须运行存根生成,添加新的真的很容易网页服务。

CXF似乎更相似但更好 – 我们还没有迁移,因为开发时间的限制以及没有迫切的理由这样做(加上相对缺乏文档6-12个月前也不是令人鼓舞)。 此外,我最近没有真正评估过市场,所以我无法告诉你CXF如何与其当代竞争对手站在一起。

关于你的观点:

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

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

我们尝试过Metro和CXF并保留了CXF,因为Metro在其jar文件中包含太多依赖项,例如Sun的API,这使得很难集成到Glassfish之外的其他应用程序服务器中。 CXF具有更清晰的包装,具有明确的外部依赖性。 我们也无法使用Metro启用Gzip压缩,而它的工作方式就像是CXF的魅力。

我首先使用Spring WS,然后使用XFire。 我是Spring用户,所以我习惯了不透明度。

XFire现在Apache CXF比Axis更容易使用。 Axis看起来过于复杂,我使用它做得非常快。 我没看过Spring WS。

我会用CXF。 它比Axis2易于使用

我只使用了Spring WS,因为这是我被告知要使用的,但它是一个非常容易使用的框架。 如果你必须使用其他东西,我会使用XFire,因为JAX-WS支持。