關於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,如Annotations 、Dynamic Clients 、JAX-WS 、Simple
* Trainsport:可擴展的傳輸層,如Apache Camel Transport 、HTTP Transport 、JMS Transport 、Local Transport
* Binding:可擴展的協議解釋層,如soap,http,xml,object ( The SOAP binding, which is the default)
* Data Binding:可擴展的的XML與Java Object映射層,如
- Aegis (2.1) — For CXF 2.1 or newer
- Aegis Databinding (2.0.x) — For CXF up to 2.0.x
- JAXB
- MTOM Attachments with JAXB
- SDO
- XMLBeans
* 編碼樣式: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