专栏首页简单就是美!如何正确地在Axis、Axis2和Apache CXF之间抉择?

如何正确地在Axis、Axis2和Apache CXF之间抉择?

阅读更多

新一代的 Web Services 框架如 Axis2、CXF 都是由现有的项目中逐渐演化而来的,Axis2 是由大家熟悉的 Axis 1.x 系列演化过来,而 Apache CXF 则是由 Celtix 和 XFire 项目整合而生,并且刚刚发布了 2.0.2 的最新版本,不过仍是 Apache 的一个孵化项目。

Axis2 是对 Axis 进行了彻底的重写的一个新项目了,它使用了新的模块化架构,更方便于功能性的扩展等等。

Apache CXF 则是由 XFire 和 Celtix 两个现有的项目进行了重组。

问题:如果现有的应用程序是基于 Axis 1.x、XFire 或者 Celtix 的话,那应该怎么办?都迁移到这些新的框架上去吗?但是即使是要迁移,那应该迁移到哪个框架上去呢?

如果是编写一个新的 Web Services 应用程序的话,就不存在迁移的问题了,但是哪个框架是你应当选择进行使用的呢?哪个比哪个更好呢?

对于现在的应用程序的迁移,如果你的应用程序是稳定而成熟的,并且在可预知的未来的情况下,只要很少的一些需求变更要做的话,那么保存你的体力,不要去做“劳民伤财“的迁移工作了。

如果你的现有应用程序BUG缠身,性能,功能等等都一片糟糕的话,那就要考虑迁移了,那选哪个框架呢?先比较一下它们的不同之处:

  1、Apache CXF 支持 WS-Addressing、WS-Policy、WS-RM、WS-Security和WS-I BasicProfile

  2、Axis2 支持 WS-Addressing、WS-RM、WS-Security和WS-I BasicProfile,WS-Policy将在新版本里得到支持

  3、Apache CXF 是根据Spring哲学来进行编写的,即可以无缝地与Spring进行整合

  4、Axis2 不是

  5、Axis2 支持更多的 data bindings,包括 XMLBeans、JiBX、JaxMe 和 JaxBRI,以及它原生的 data binding(ADB)。

  6、Apache CXF 目前仅支持 JAXB 和 Aegis,并且默认是 JAXB 2.0,与 XFire 默认是支持 Aegis 不同,XMLBeans、JiBX 和 Castor 将在 CXF 2.1 版本中得到支持,目前版本是 2.0.2

  7、Axis2 支持多种语言,它有 C/C++ 版本。

  8、Apache CXF 提供方便的Spring整合方法,可以通过注解、Spring标签式配置来暴露Web Services和消费Web Services

如何抉择:

1、如果应用程序需要多语言的支持,Axis2 应当是首选了;

2、如果应用程序是遵循 Spring 哲学路线的话,Apache CXF 是一种更好的选择,特别对嵌入式的 Web Services 来说;

3、如果应用程序没有新的特性需要的话,就仍是用原来项目所用的框架,比如 Axis1,XFire,Celtrix 或 BEA 等等厂家自己的 Web Services 实现,就别劳民伤财了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 发表于dW的教程之开放源代码的服务框架 - Apache CXF 简介

    http://www.ibm.com/developerworks/cn/edu/j-dw-java-cxf.html

    阿敏总司令
  • WAS 8.5在HP-UX Itanium上无法图形化安装启动IIM之解 博客分类: JavaIBMWebSphere IBMWASIIM

    继之前写的“WAS 8.5在AIX上无法启动图形化概要管理工具WCT或PMT之解”之后

    阿敏总司令
  • HuaWei EC1260 Surfing Modem Setting on Ubuntu Linux 7.10 X64 博客分类: 心困网中央

    Linux Ubuntu710X64 2.6.22-14-generic #1 SMP Sun Oct 14 21:45:15 GMT 2007 x86_64 ...

    阿敏总司令
  • WebSocket服务器和客户端的一对多通知实现

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

    Jerry Wang
  • 天生强大的Redis是如何做实时订阅推送的

    先说一下领劵中心的项目吧,这个项目就类似京东app的领劵中心,当然图是截取京东的,公司的就不截了。。。

    程序员追风
  • 我是如何用Redis做实时订阅推送的

    先说一下领劵中心的项目吧,这个项目就类似京东app的领劵中心,当然图是截取京东的,公司的就不截了。。。

    JAVA葵花宝典
  • 想不到吧?我是这样用Redis实现消息定时推送的!

    先说一下领劵中心的项目吧,这个项目就类似京东app的领劵中心,当然图是截取京东的,公司的就不截了。。。

    黄泽杰
  • 想不到吧?我是这样用Redis实现消息定时推送的!

    先说一下领劵中心的项目吧,这个项目就类似京东app的领劵中心,当然图是截取京东的,公司的就不截了。。。

    好好学java
  • 我是如何用Redis做实时订阅推送的

    先说一下领劵中心的项目吧,这个项目就类似京东app的领劵中心,当然图是截取京东的,公司的就不截了。。。

    程序员小明
  • unicode中的‘\xa0’字符在转换成gbk编码时会出现问题,gbk无法转换'\xa0'字符。

    unicode中的‘\xa0’字符在转换成gbk编码时会出现问题,gbk无法转换’\xa0’字符。 所以,在转换的时候必需进行一些前置动作:

    学到老

扫码关注云+社区

领取腾讯云代金券