`

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

    博客分类:
  • Java
阅读更多
新一代的 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 实现,就别劳民伤财了。
分享到:
评论
26 楼 Frederick 2008-07-07  
引用

问一下用多少网站在真正的用web sevice?有多少网站真正的使用了axis cxf。天天都在有新框架诞生, 如果程序员要一个一个去学,岂不是太累了。
在我看来 如果网站不需要对外公布service,只是内部模块见交互,则完全可以自己去定义web service协议,越简单越好 能解决问题就好。httpclient就是个不错的选择


像电信这种企业,他们的系统构成十分复杂。有的是很多年以前的老系统,有的是最近才开发出来投入使用的。有的用.NET,有的用C++,有的用Java。使用的技术也是五花八门。而且他们有个习惯,就是决不把一个系统给一个公司完成,而是拆成多个模块,分别给不同的厂商完成。在这中背景下,我不敢相信使用自己拍脑袋想出来的协议而不使用公开的大家都接收的协议会是一个什么后果。

电信如此,很多别的行业我相信多多少少也会遇到类似的情况,只是迟早问题和程度问题而已。

WebService能够这么流行,是有其原因的。别把大家都想象成头脑僵化的笨蛋
25 楼 咖啡舞者 2008-07-06  
xly_971223 写道
问一下用多少网站在真正的用web sevice?有多少网站真正的使用了axis cxf。天天都在有新框架诞生, 如果程序员要一个一个去学,岂不是太累了。
在我看来 如果网站不需要对外公布service,只是内部模块见交互,则完全可以自己去定义web service协议,越简单越好 能解决问题就好。httpclient就是个不错的选择


在XFIRE中就有用到了HTTPCLIENT。
如果仅用HTTPCLIENT实现远程通信service,虽然这样可以达到web service的目的,但开发效率太低。
而且接口不友好。

不知道我的理解对不对。因为我现在项目中开发分布式的系统也只是HttpClient加XML来进行数据交互,成本低但开发效率也很低。
24 楼 kevin002 2008-02-02  
现在用的是XFIRE感觉用着很简单,功能也不错.
23 楼 freeflyfree 2008-01-28  
jnn 写道
jxauyhj 写道
如果要做成被 delphi .net等都好调用的话 哪个会好点??


我们做过一些CXF与.net之间的互操作性测试,应该问题不大。



我最近做的一个项目需要调用.net做的web service,对方返回的是一个自定义对象的数组

类似:
对象为 user,返回一个user的数组

不知道如何能接收这种对象数组?我测试了只能接收基本类型的数组。
22 楼 homesailing 2008-01-08  
并且一些ws-*规范都可以通过这些ide来进行配置。我觉得很方便、很稳定、很安全!
21 楼 homesailing 2008-01-08  
lyo 写道
Axis和很多开源包使用的xml解析器都冲突,每次用都遇到问题,特别是再websphere下部署webservice就是恶梦. 有时间看看 CXF!


为何说在was下部署ws时噩梦?

如果用rad6/7开发ws,然后部署上基于axis引擎的was,同部署常规ear,war应用没有区别。
20 楼 wtslh 2008-01-07  
项目中,有个运行中心,要提供很多个服务,允许多种语言开发的软件进行访问,而运行中心也要访问外部的很多个服务(不一定是什么语言开发的)。关于框架的采用,希望给些建议,谢谢
19 楼 jnn 2007-12-22  
CXF支持client端的异步调用功能,这个功能是JAXWS 规范中定义的。
18 楼 agile_boy 2007-12-21  
AXIS2好像支持异步操作,CXF支持么?
17 楼 jnn 2007-12-18  
今天突然翻到Dan Diephouse 写的有关CXF 和 Axis的区别,建议有兴趣的朋友读一读。
http://www.nabble.com/Re%3A-Axis2-vs-CXF-p11481341.html
16 楼 jnn 2007-12-17  
xly_971223 写道
问一下用多少网站在真正的用web sevice?有多少网站真正的使用了axis cxf。天天都在有新框架诞生, 如果程序员要一个一个去学,岂不是太累了。 在我看来 如果网站不需要对外公布service,只是内部模块见交互,则完全可以自己去定义web service协议,越简单越好 能解决问题就好。httpclient就是个不错的选择
<br/>
<br/>
有点不太懂, httpclient和WebServers 有什么直接的联系呢?<br/>
还要如果想研究网站提供的服务 你可以看看Yahoo, Google, Amazon...
15 楼 rEloaD_cn 2007-12-17  
aixs2比较好,支持好多新的ws-* 。还可以支持模块增加
cxf不了解
14 楼 zhangcheng 2007-12-15  
xly_971223 写道
问一下用多少网站在真正的用web sevice?有多少网站真正的使用了axis cxf。天天都在有新框架诞生, 如果程序员要一个一个去学,岂不是太累了。
在我看来 如果网站不需要对外公布service,只是内部模块见交互,则完全可以自己去定义web service协议,越简单越好 能解决问题就好。httpclient就是个不错的选择


支持
13 楼 fjiis 2007-12-11  
从CXF在TOMCAT下输出的日志看,基本上是SOAP:Envelope与SOAP-ENV:Envelope的差别,请求的参数都有包含在这里面了,可为什么进行service.java时DELPHI客户端请求的参数变成了null?有人知道吗?
12 楼 fjiis 2007-12-11  
请问我用DELPHI7.0做客户端测试与CXF互操作性时发生客户端请求参数发到CXF时变成null了!这是为什么?用JAVA写的客户端又没有问题
11 楼 xly_971223 2007-12-10  
问一下用多少网站在真正的用web sevice?有多少网站真正的使用了axis cxf。天天都在有新框架诞生, 如果程序员要一个一个去学,岂不是太累了。
在我看来 如果网站不需要对外公布service,只是内部模块见交互,则完全可以自己去定义web service协议,越简单越好 能解决问题就好。httpclient就是个不错的选择
10 楼 sslaowan 2007-12-09  
jxauyhj 写道
如果要做成被 delphi .net等都好调用的话 哪个会好点??


  用过Xfire和Delphi的互操作,没什么问题
9 楼 sslaowan 2007-12-09  
jxauyhj 写道
如果要做成被 delphi .net等都好调用的话 哪个会好点??
8 楼 fenixshadow 2007-12-04  
转载请注明出处
7 楼 jnn 2007-10-29  
jxauyhj 写道
如果要做成被 delphi .net等都好调用的话 哪个会好点??


我们做过一些CXF与.net之间的互操作性测试,应该问题不大。

相关推荐

    axis2-1.8.0apache-cxf-3.4.4.rar

    标题中的"axis2-1.8.0apache-cxf-3.4.4.rar"是一个压缩包文件,其中包含了两个重要的开源项目:Apache Axis2版本1.8.0和Apache CXF版本3.4.4。这两个项目都是用于构建和部署Web服务的重要工具,主要应用于Java开发...

    cxf与axis2区别

    在本文中,我们将探讨CXF和Axis2框架的区别,以帮助开发者更好地选择适合自己的框架。 架构设计 Axis2是一个对Axis进行了彻底的重写的一个新项目,它使用了新的模块化架构,更加方便于功能性的扩展等等。Apache ...

    Axis1,Axis2,Xfire,CXF区别

    Axis1, Axis2, Xfire, CXF 是四种常用的WebService框架,它们之间有着不同的特点和应用场景。本文将对这四种框架进行详细的比较和分析,以帮助开发者选择合适的框架。 XFire 是一种新一代的 WebService 平台,它...

    关于WebService的实例及相关axis/apache-cxf的应用

    在本文中,我们将深入探讨WebService的原理以及如何利用Apache Axis和Apache CXF这两个流行的Java框架来实现和消费WebService。 首先,理解WebService的基础概念至关重要。WebService是一种通过互联网进行通信的...

    Developing Web Services with Apache CXF and Axis2(3rd Edition).zip

    Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且...

    两本关于apache cxf的书籍,英文

    读者可能会学到如何在CXF和Axis2之间进行选择,以及如何结合两者的优势来构建复杂的服务架构。书中可能包含了关于服务版本控制、安全性和性能优化的章节,这些都是大型企业级项目中至关重要的考虑因素。此外,对于...

    webservice axis2 cxf jar包及简单实例

    本文将深入探讨两种流行的Java Web服务框架——Axis2和CXF,并提供一个简单的实例来帮助理解它们的工作原理和使用方法。 首先,让我们了解一下`Axis2`。Axis2是Apache软件基金会开发的一个高性能、灵活且可扩展的...

    Axis2与CXF的对比

    Apache Axis2和CXF都是Java世界中非常知名的Web服务框架,它们主要用于构建和部署Web服务。两者各有特色,适用于不同的应用场景。以下是对这两个框架特点、区别及适用场合的详细对比,以及它们在效率上的表现。 1. ...

    Developing Web Services with Apache CXF and Axis2, 3rd Edition

    1. **同时使用Apache CXF 2.2.x和Axis2 1.5.x**:通过尽可能多地利用标准API(如JAX-WS、JAX-RS)来操作这两个平台。 2. **使用缓存创建可扩展的RESTful Web服务**:介绍如何通过缓存机制提高RESTful Web服务的性能...

    Axis2,CXF版本学习笔记

    当我们谈论“Axis2,CXF版本学习笔记”时,这通常涉及到两个主要的Java Web服务框架:Apache Axis2和Apache CXF。这两个框架都用于构建和部署SOAP(简单对象访问协议)和RESTful(Representational State Transfer)...

    cxf客户端调用axis服务端流程

    Axis1.x版本是较老的实现,而Axis2是其后续版本,提供了更好的性能和模块化设计。 ### 二、CXF客户端调用Axis服务端步骤 #### 1. 获取服务端WSDL 首先,你需要获取Axis服务端的WSDL(Web Service Definition ...

    Axis和CXF的比较

    - **Axis2**:支持多种序列化机制,如XMLBeans、JiBX、JaxMe和JAXB等,但在与Spring框架的集成上不如CXF方便。 - **CXF**:与Spring框架有着很好的集成,能够很好地利用Spring的各种特性,如依赖注入、事务管理等...

    myService_purpose1sv_cxf调用axis2的接口服务_接口服务_

    Apache CXF和Axis2都是流行的开放源码服务框架,它们各自在Web服务领域有着广泛的应用。 Apache CXF是一个强大的服务框架,它允许开发人员创建和消费各种类型的Web服务,包括SOAP、RESTful等。CXF集成了多种协议和...

    搜集网上的资料总结的XFire,Axis2,CXF的对比

    性能对比方面,根据提供的资料,CXF在无WS-Security的性能测试中与Axis2和Metro相当。但在使用WS-Security时,CXF明显优于Axis2,尤其是在处理大量响应时,性能差距更为显著。这意味着在安全性要求较高的场景下,CXF...

    axis2解决 org.apache.axis2.util.JavaUtils.callStackToString问题

    在开发基于Axis2的Web服务时,可能会遇到各种错误和异常,其中之一就是与`org.apache.axis2.util.JavaUtils.callStackToString`相关的问题。这个问题通常出现在Axis2尝试获取并打印堆栈跟踪信息时。 `...

    cxf+spring+axis包

    【标题】"cxf+spring+axis包"指的是在Java开发环境中使用Apache CXF、Spring框架和Axis工具进行Web服务集成的一种技术组合。这个压缩包包含的版本是cxf-2.4.1、axis-1.4以及适用于Spring 3.0的库。 【描述】"cxf-...

    Developing Web Services with Apache CXF and Axis2_3rd Edition

    作者Kent Kai Ok Tong以简明扼要的方式介绍了一系列复杂的Web服务标准和技术,并通过实际示例帮助读者掌握Apache CXF和Axis2这两个流行的开源框架。 #### 二、核心知识点解析 ##### 1. **Apache CXF与Axis2简介** ...

    WebService Axis和XFire(CXF)的开发流程

    【WebService Axis和XFire(CXF)的开发流程】 在IT领域,WebService是一种基于XML的通信标准,用于构建分布式系统中的应用程序接口(API)。本篇主要介绍两种常用的WebService框架——Axis和XFire(现已被CXF合并)...

    apache-cxf-2.4.6.zip

    7. **集成其他Apache项目**:CXF与Apache Axis2、Tomcat、Jetty等项目有良好的集成,可以方便地嵌入到现有的应用服务器中。 8. **多种数据绑定技术**:CXF支持JAXB、XMLBeans、Aegis等多种数据绑定技术,使XML到...

Global site tag (gtag.js) - Google Analytics