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

Java Web服务框架/库,哪个更好,为什么?,java,web-services,spring,jakarta-ee,frameworks,Java,Web Services,Spring,Jakarta Ee,Frameworks,目前,我正在评估Java中web服务框架的数量。我需要一个web服务框架来帮助我公开运行在JBoss上的现有应用程序的一些功能,该应用程序主要是使用Spring和POJO(没有EJB)开发的 我需要的是一个具有以下属性的框架: 它应该提供自动生成样板代码的工具,并通过消除重复任务来节省时间,例如从Java生成WSDL的工具(java2wsdl)、生成端点的工具等 应用程序应该容易地部署在现有的J2EE平台(JBoss)上,这意味着它应该包含尽可能少的配置文件(如axis2框架中的axis2.xm

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

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

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

    • Axis2
    • ApacheCXF
    • 还有太阳的地铁
    • 春季天气预报
    但仍很难决定在我的案例中使用什么:

    • Axis2的级别似乎很低,它需要单独的应用程序归档和大量配置
    • SpringWS似乎过于不透明,而且“出于印象的目的而复杂(?)
    • ApacheCXF和Metro可能是我更喜欢选择的两个框架,但仍然是

    我需要你的意见和在实际应用中使用它们的经验

    我已经使用了CXF的前身XFire一段时间了,它还不错。当时,我们从Axis迁移过来有两个主要原因:性能和易于开发。当时(现在不知道这是不是真的),XFire的性能比其他任何东西都好,而且通过注释驱动的开发,不必运行存根生成,添加新的web服务真的很容易

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

    关于你的观点:

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

  • 因此,我可能有点不偏不倚,因为我还没有尝试过其他的方法,但我会竖起大拇指看看CXF。它非常快,使用起来相对简单,如果需要调整它,它的功能也相当强大。

    我会先使用SpringWS,然后使用XFire。我是Spring用户,所以我习惯了不透明性。

    XFire现在Apache CXF远比Axis更容易使用。在Axis看起来过于复杂的地方,我很快就完成了一些事情。我没有看SpringWS。

    我只使用了SpringWS,因为我被告知要使用它,但它是一个非常容易使用的框架。如果您必须使用soemthing,那么由于JAX-WS支持,我将使用XFire

    我们尝试了Metro和CXF,并保留了CXF,因为Metro在其jar文件中包含了太多的依赖项,如Sun的API,这使得它很难集成到Glassfish以外的应用服务器中。CXF有一个更干净的包装,具有明确的外部依赖性。
    我们也没能在Metro上启用Gzip压缩,而它在CXF上的工作却很有魅力

    我将使用CXF。它比Axis2更易于使用

    我已经完成了XFire和CXF,升级相对来说比较轻松。XML配置文件略有不同,但差别不大。