新一代的 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 實現,就別勞民傷財了。
Axis和CXF的比較
在soa領域,我們認為web service是soa體系的構建單元 building block 對於服務開發人員來說,axis和cxf一定都不會陌生。這兩個產品都是apache孵化器下面的web service開源開發工具。axis2的最新版本是1.3.cxf現在已經到了2.0版本。這兩個框架 都...
axis2接收json 利用AXIS2返回JSON
在已經有axis2的基礎之上操作 4 在axis2.xml中新增json訊息格式,找到標籤,在這個標籤裡新增如下 段 class org.apache.axis2.json.jsonmessageformatter class org.apache.axis2.json.jsonbadgerfish...
axis2學習 axis2訊息處理機制
為了更好的理解axis2,我們首先看web services的訊息生命週期的概念。通常,訊息的生命週期如下圖 img 訊息傳送者應用建立原始的soap訊息 由相應的訊息頭和訊息體組成的xml檔案,一旦訊息準備完畢,就會把這些訊息通過http jms等方式傳送出去。如果axis2載入了其他的ws 模組...