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 實現,就別勞民傷財了。
Axis和很多開源包使用的xml解析器都沖突,每次用都遇到問題,特別是再websphere下部署webservice就是惡夢. 有時間看看 CXF!
是的,axis和jfreechart就有沖突.
CXF應該是Apache的孵化項目吧。
這裏補充兩句
CXF通過了JAXWS2.0的TCK,目前正在進行JAXWS2.1的開發工作。
CXF的編程模型比AIXS2簡單,而且在Stand alone的方式下執行效率比AXIS2要高很多。
如果妳要用JAVA開發Web Services,那用JAXWS API開發可以保證妳的代碼在大多數Web Services Framework上正常運行。還有就是如果妳還是在使用RPC/Encoding的方式,AXIS 1.x 是妳唯壹的選擇了。 因為XFire , CXF 以及AXIS2 都不支持RPC/Encoding的編碼方式,要說原因嗎?那主要是在JAXWS 規範中已經把RPC/Encoding的方式拋棄掉了,因為這種編碼方式的互操作性太差了。