Apache CXF notes

關於Apache CXF

Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,現在已經正式更名爲 Apache CXF 了,以下簡稱爲 CXF。CXF 繼承了 Celtix 和 XFire 兩大開源項目的精華,提供了對 JAX-WS 全面的支持,並且提供了多種 Binding 、DataBinding、Transport 以及各種 Format 的支持,並且可以根據實際項目的需要,採用代碼優先(Code First)或者 WSDL 優先(WSDL First)來輕鬆地實現 Web Services 的發佈和使用。


Apache CXF 是一個開源的 Services 框架,CXF 幫助您利用 Frontend 編程 API 來構建和開發 Services ,像 JAX-WS 。這些 Services 可以支持多種協議,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,並且可以在多種傳輸協議上運行,比如:HTTP、JMS 或者 JBI,CXF 大大簡化了 Services 的創建,同時它繼承了 XFire 傳統,一樣可以天然地和 Spring 進行無縫集成。


核心處理模塊
 * Bus -- CXF容器,基於Spring的Container與Configuration。(Configuring the Bus
 * ServiceModel -- 服務元數據,其中ServiceInfo類似WSDL,而其他部分描述了DataBinding,Interceptors等CXF屬性。
 * Message -- 在框架內流動的通用信息單元。
 * Interceptor -- 在管道內處理信息的功能單元,由Interceptor Chain控制,分屬不同的階段(Phase)。


擴展模塊

 * FrontEnd:用戶編程API,如AnnotationsDynamic ClientsJAX-WSSimple

 * Trainsport:可擴展的傳輸層,如Apache Camel TransportHTTP TransportJMS TransportLocal Transport

 * Binding:可擴展的協議解釋層,如soap,http,xml,object ( The SOAP binding, which is the default)

 * Data Binding:可擴展的的XML與Java Object映射層,如

WSDL綁定樣式各種組合優劣勢比較

* 編碼樣式:encoded與literal,SOAP協議是XML Schema之前的產物,因此自定義了encode協議。WS-I Basic Profile已將其排除在外。在wsdl的wsdl:binding->wsdl:operation->wsdl:input/output->soap:body中定義。
* 綁定樣式:RPC與Document。面向方法與面向消息的區別。RPC以方法及其參數組織XML,而Document可以任意的形式。
* wrapped 與unWrapped(Bare):在Document樣式下,wrapped會將所有的參數包裝成body下的一個節點,而Bare則可以有多個Body下的節點。

三種可選的樣式
    * RPC/encoded:古老而傳統樣式。以方法名節點->參數節點組織XML。
    * Document/literal:只以文檔形式傳遞參數。
    * Document/literal/wrapped:目前最流行的、默認的方式。定義一個以方法名爲名稱的type,作爲body下的唯一節點,包裹所有參數。此時的XML既是一次方法調用,也可以看作是一條消息。結合了前兩種的優勢。


CXF SOAP消息的默認樣式爲document/literal/wrapped

 (The default is document. The default is literal. )

 

瞭解相關知識之後,如何開發?請查看這裏 【Apache CXF 簡介(IBM DW)】

 

參考:

CXF用戶手冊: http://cxf.apache.org/docs/index.html

CXF-SpringSide wiki: http://wiki.springside.org.cn/display/calvin/CXF

Web Service不知道請看 Web Service百度百科Web Service Wiki

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章