原文地址:http://www.ibm.com/developerworks/cn/education/java/j-cxf/section2.html
CXF 簡介
關於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 的一個孵化項目。
Apache CXF 是一個開源的 Services 框架,CXF 幫助您利用 Frontend 編程 API 來構建和開發 Services ,像 JAX-WS 。這些 Services 可以支持多種協議,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,並且可以在多種傳輸協議上運行,比如:HTTP、JMS 或者 JBI,CXF 大大簡化了 Services 的創建,同時它繼承了 XFire 傳統,一樣可以天然地和 Spring 進行無縫集成。
特性:
CXF 包含了大量的功能特性,但是主要集中在以下幾個方面:
- 支持 Web Services 標準:CXF 支持多種 Web Services 標準,包含 SOAP、Basic Profile、WS-Addressing、WS-Policy、WS-ReliableMessaging 和 WS-Security。
- Frontends:CXF 支持多種“Frontend”編程模型,CXF 實現了 JAX-WS API (遵循 JAX-WS 2.0 TCK 版本),它也包含一個“simple frontend”允許客戶端和 EndPoint 的創建,而不需要 Annotation 註解。CXF 既支持 WSDL 優先開發,也支持從 Java 的代碼優先開發模式。
- 容易使用: CXF 設計得更加直觀與容易使用。有大量簡單的 API 用來快速地構建代碼優先的 Services,各種 Maven 的插件也使集成更加容易,支持 JAX-WS API ,支持 Spring 2.0 更加簡化的 XML 配置方式,等等。
- 支持二進制和遺留協議:CXF 的設計是一種可插撥的架構,既可以支持 XML ,也可以支持非 XML 的類型綁定,比如:JSON 和 CORBA。
項目目標:
概要
- 高性能
- 可擴展
- 簡單且容易使用
多種支持
- 支持 JAX-WS、 JAX-WSA、JSR-181 和 SAAJ;
- 支持 SOAP 1.1、1.2、WS-I BasicProfile、WS-Security、WS-Addressing、WS-RM 和 WS-Policy;
- 支持 WSDL 1.1 、2.0;
- 支持 MTOM;
傳輸方式
- Bindings:SOAP、REST/HTTP;
- Data Bndings:目前支持 JAXB 2.0、Aegis 兩種,默認是 JAXB 2.0。XMLBeans、Castor 和 JiBX 數據綁定方式將在 CXF 2.1 版本中得到支持;
- 格式(Format):XML、JSON;
- 傳輸方式:HTTP、Servlet、JMS 和 Jabber;
- 可擴展的 API 允許爲 CXF 增加其它的 Bindings,以能夠支持其它的消息格式,比如:CSV 和固定記錄長度。
部署
- 輕量級容器:可在 Tomcat 或基於 Spring 的容器中部署 Services;
- 集成 JBI:可以在如 ServiceMix, OpenESB or Petals 等等的 JBI 容器中將它部署爲一個服務引擎;
- 集成 SCA:可以部署在如 Tuscany 之類的 SCA 容器中;
- 集成 J2EE:可以在 J2EE 應用服務器中部署 Services,比如:Geronimo、JOnAS、JBoss、WebSphere Application Server 和 WebLogic Application Server,以及 Jetty 和 Tomcat;
- 獨立的 Java 客戶端/服務器。
語言支持
- 全面支持 JAX-WS 2.0 客戶端/服務器編程模型;
- 支持 JAX-WS 2.0 synchronous、asynchronous 和 one-way API's;
- 支持 JAX-WS 2.0 Dynamic Invocation Interface (DII) API;
- 支持 wrapped and non-wrapped 風格;
- 支持 XML messaging API;
- 支持 JavaScript 和 ECMAScript 4 XML (E4X) ,客戶端與服務端均支持;
- 通過 Yoko 支持 CORBA;
- 通過 Tuscany 支持 SCA;
- 通過 ServiceMix 支持 JBI ;
代碼生成工具
- Java to WSDL;
- WSDL to Java;
- XSD to WSDL;
- WSDL to XML;
- WSDL to SOAP;
- WSDL to Service;