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

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

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

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

我简要地检查了

  • 轴2
  • Apache CXF
  • 和太阳的地铁
  • 春季 WS

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

  • Axis2似乎级别很低,它需要单独的应用程序存档和大量配置
  • 春季WS似乎太不透明了,“为了印象目的而复杂(?)”
  • Apache CXF和Metro可能是我更喜欢选择的两个框架,但仍然

我需要你对在实际应用程序中使用它们中的一些的意见和经验。


答案 1

我已经使用CXF的前身XFire一段时间了,它并没有太糟糕。当时,我们从安讯士迁移过来主要有两个原因:性能和易于开发。当时(现在不知道这是不是真的),XFire的性能比任何东西都好得多,并且通过注释驱动的开发,不必运行存根生成,添加新的Web服务真的非常容易。

CXF似乎更相同,但更好 - 由于开发时间的限制以及没有紧迫的理由,我们还没有迁移(加上6-12个月前相对缺乏文档并不太令人鼓舞)。此外,我最近还没有真正评估过市场,所以我不能告诉你CXF如何与当代竞争对手竞争。

关于您的积分:

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

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


答案 2

我们尝试了Metro和CXF并保留了CXF,因为Metro在其jar文件中包含了太多的依赖项,例如Sun的API,这使得很难集成到Glassfish以外的另一个应用程序服务器中。CXF 具有更清晰的打包,具有显式的外部依赖项。我们也未能使用Metro启用Gzip压缩,而它与CXF一起工作就像一个魅力。


推荐