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

http://www.javaeye.com/topic/128498

新一代的 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 实现,就别劳民伤财了。

 

时间: 2024-10-16 03:08:41

如何正确地在Axis、Axis2和Apache CXF之间抉择?的相关文章

关于 axis2 org.apache.axis2.databinding.ADBException

问题描述 我实现别人的一个ws接口,用axis2实现的,报一个这个错!org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement resultat org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)有没有个也遇到过呢?还有就是想向各位请教下,axis,axis2,cxf 都可以实现哪些形式的webservice

axis,axis2 调用c# Object reference not set to an instance of an object.

问题描述 axis,axis2调用c#Serverwasunabletoprocessrequest.--->Objectreferencenotsettoaninstanceofanobject.axis,axis2调用java开发的接口都可以通过.调用C#(RecvRemoteData.asmx?wsdl)的则都报这个问题wdl片段:-<s:elementname="GetYWXDInfo">-<s:complexType>-<s:sequenc

apache cxf中对于不是返回200错误的处理及获取错误描述文本的方法

现象: 我们在使用apache cxf框架的时候遇到了一些问题,一般来说,如果我们用rest client 如果处理的返回是正确的,那么我们可以很轻易的处理,但是如果我们如果返回的请求返回码不是200,这种情况我们在调试时候发现exception对象中并不包含任何error message的文本: 比如类似这个截图的请求(我们用restclient)测试的,这个返回码是400,返回的响应中有error description字段,我们想要获取这个字段的内容,但是我们尝试了很多次,不能直接从exc

缓存设置-基于Apache CXF的webservice如何设置缓存?

问题描述 基于Apache CXF的webservice如何设置缓存? 最近在用JAVA编写webservice,对性能有要求,打算先从缓存设置开始,如客户端发送请求后,服务端响应数据,如果客户端在短时间内再次发送同样的请求,则webservice不再查询数据库,而是直接从缓存中获取数据,如何能实现这一功能?

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

http://www.ibm.com/developerworks/cn/edu/j-dw-java-cxf.html 本教程介绍了 Apache CXF 服务框架的基本知识,并通过讲解自带的例子来初步体验通过 CXF 进行服务的发布与消费:然后搭建基于 Eclipse 的 Apache CXF 开发环境,并通过一个"调查投票"示例应用程序来演示 CXF 整合 Spring 2.0 的基本开发过程. 在本教程中 SOA 目前已经成为了人人皆知的热点,对分析人员来讲,SOA 重点需要加强

Apache CXF 在 WebLogic 9.2 上的问题定位分析及权宜之计

http://yulimin.javaeye.com/blog/129015 同样的程序在 Tomcat 5.5.16/25 以及 Jetty 5.1.12 上都能够成功部署及运行,但是部署到 WebLogic 9.2 上时出错 org.springframework.web.context.ContextLoader initWebApplicationContext FATAL: Context initialization failed org.springframework.beans.

webservice-org.apache.cxf.interceptor.Fault: Could not start Jetty server on port 80

问题描述 org.apache.cxf.interceptor.Fault: Could not start Jetty server on port 80 三月 22, 2014 5:09:33 下午 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass INFO: Creating Service {http://ws.java.org/}HelloWorldWs from clas

关于apache cxf 结合Spring框架开发webservice服务

问题描述 我在用apache cxf 结合Spring框架开发webservice服务时,遇到一个这样的问题,请大家帮忙解决一下,问题描述如下: webservice启动配置如下 Java代码 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http

Apache CXF实现一个纯的JAX-WS web service

先在Eclipse中新建一个Java Project (可以不是WTP的Dynamic Web Project)  选择Java Project 再看pom.xml 我们使用cxf 3.1.4版本, <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation=&quo