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

时间:2009-01-14 10:51:15

标签: java web-services spring java-ee frameworks

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

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

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

    • 的Axis2
    • Apache CXF
    • 和Sun's Metro
    • Spring WS

    但在我的案例中仍然很难决定使用什么:

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

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

6 个答案:

答案 0 :(得分:23)

我已经使用了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最初的一个弱点,虽然现在看起来似乎更好了。总体设计和架构似乎相对理智;在一个人自己的过滤器中插入以修改传输细节并不是很痛苦,并且通常会考虑扩展现有的类(例如,合理的方法被标记为受保护而不是私有)。
  6. CXF完全支持JAX-WS。
  7. 所以我可能有点不偏不倚,因为我没有尝试过其他的,但我会竖起大拇指看看CXF。它非常快,相对简单,如果你需要调整它,它会相当强大。

答案 1 :(得分:4)

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

答案 2 :(得分:3)

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

答案 3 :(得分:2)

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

答案 4 :(得分:2)

我将使用CXF。它比Axis2

更容易使用

答案 5 :(得分:1)

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