一、JWS是Java语言对WebService服务的一种实现,用来开发和发布服务。而从服务自己的角度来看JWS服务是没有语言界限的。可是Java语言为Java开发者提供便捷发布和调用WebService服务的一种途径。
二、Axis2是Apache下的一个重量级WebService框架,准确说它是一个Web Services / SOAP / WSDL 的引擎,是WebService框架的集大成者,它能不但能制做和发布WebService,并且能够生成Java和其余语言版WebService客户端和服务端代码。这是它的优点所在。可是,这也不可避免的致使了Axis2的复杂性,使用过的开发者都知道,它所依赖的包数量和大小都是很惊人的,打包部署发布都比较麻烦,不能很好的与现有应用整合为一体。可是若是你要开发Java以外别的语言客户端,Axis2提供的丰富工具将是你不二的选择。
三、XFire是一个高性能的WebService框架,在Java6以前,它的知名度甚至超过了Apache的Axis2,XFire的优势是开发方便,与现有的Web整合很好,能够融为一体,而且开发也很方便。可是对Java以外的语言,没有提供相关的代码工具。XFire后来被Apache收购了,缘由是它太优秀了,收购后,随着Java6 JWS的兴起,开源的WebService引擎已经再也不被看好,渐渐的都败落了。
四、CXF是Apache旗下一个重磅的SOA简易框架,它实现了ESB(企业服务总线)。CXF来自于XFire项目,通过改造后造成的,就像目前的Struts2来自WebWork同样。能够看出XFire的命运会和WebWork的命运同样,最终会淡出人们的视线。CXF不可是一个优秀的Web Services / SOAP / WSDL 引擎,也是一个不错的ESB总线,为SOA的实施提供了一种选择方案,固然他不是最好的,它仅仅实现了SOA架构的一部分。
基于以上的认识,咱们能够得知,
虽然有了Java6,可是咱们还能够选择Axis二、XFire、CXF等。咱们不能期望有了Java6 JWS,就能异想天开去实施SOA。若是要与别的语言交互,也许咱们还有赖于Axis2等等,固然这不是惟一选择,仅仅是一种可供选择的方案。
还有,目前不少企业的应用仍是基于Java5的,而Java5的项目不会瞬间都升级到Java6,若是要在老项目上作扩展,咱们还有赖于其余开源的WS引擎。
对于如今的应用程序的迁移,若是你的应用程序是稳定而成熟的,而且在可预知的将来的状况下,只要不多的一些需求变动要作的话,那么保存你的体力,不要去作“劳民伤财“的迁移工做了。
若是你的现有应用程序BUG缠身,性能,功能等等都一片糟糕的话,那就要考虑迁移了,那选哪一个框架呢?先比较一下它们的不一样之处:
一、Apache CXF 支持 WS-Addressing、WS-Policy、WS-RM、WS-Security和WS-I BasicProfile
二、Axis2 支持 WS-Addressing、WS-RM、WS-Security和WS-I BasicProfile,WS-Policy将在新版本里获得支持
三、Apache CXF 是根据Spring哲学来进行编写的,便可以无缝地与Spring进行整合
四、Axis2 不是
五、Axis2 支持更多的 data bindings,包括 XMLBeans、JiBX、JaxMe 和 JaxBRI,以及它原生的 data binding(ADB)。
六、Apache CXF 目前仅支持 JAXB 和 Aegis,而且默认是 JAXB 2.0,与 XFire 默认是支持 Aegis 不一样,XMLBeans、JiBX 和 Castor 将在 CXF 2.1 版本中获得支持,目前版本是 2.0.2
七、Axis2 支持多种语言,它有 C/C 版本。
八、Apache CXF 提供方便的Spring整合方法,能够经过注解、Spring标签式配置来暴露Web Services和消费Web Services
如何抉择:
一、若是应用程序须要多语言的支持,Axis2 应当是首选了;
二、若是应用程序是遵循 Spring 哲学路线的话,Apache CXF 是一种更好的选择,特别对嵌入式的 Web Services 来讲;
三、若是应用程序没有新的特性须要的话,就还是用原来项目所用的框架,好比 Axis1,XFire,Celtrix 或 BEA 等等厂家本身的 Web Services 实现。
source:http://blog.csdn.net/rockstar541/article/details/21106385