Apache CXF 介紹
關于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已經是一個正式的Apache頂級項目。
Apache CXF 是一個開源的 Services 框架,CXF 幫助您利用 Frontend 編程 API 來構建和開發 Services ,像 JAX-WS 。這些 Services 可以支持多種協議,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,并且可以在多種傳輸協議上運行,比如:HTTP、JMS 或者 JBI,CXF 大大簡化了 Services 的創建,同時它繼承了 XFire 傳統,一樣可以天然地和 Spring 進行無縫集成。
Apache CXF 是一個開放源代碼框架,提供了用于方便地構建和開發 Web 服務的可靠基礎架構。它允許創建高性能和可擴展的服務,您可以將這樣的服務部署在 Tomcat 和基于 Spring 的輕量級容器中,以及部署在更高級的服務器上,例如 Jboss、IBM® WebSphere® 或 BEA WebLogic。
該框架提供了以下功能:
-
Web 服務標準支持:CXF 支持以下 Web 服務標準:
-
Java API for XML Web Services (JAX-WS)
-
SOAP
-
Web 服務描述語言(Web Services Description Language ,WSDL)
-
消息傳輸優化機制(Message Transmission Optimization Mechanism,MTOM)
-
WS-Basic Profile
-
WS-Addressing
-
WS-Policy
-
WS-ReliableMessaging
-
WS-Security
-
前端建模:CXF 提供了前端建模的概念,允許您使用不同的前端 API 來創建 Web 服務。API 允許您使用簡單的工廠 Bean 并通過 JAX-WAS 實現來創建 Web 服務。它還允許您創建動態 Web 服務客戶端。
-
工具支持:CXF 提供了用于在 Java Bean、Web 服務和 WSDL 之間進行轉換的不同工具。它提供了對 Maven 和 Ant 集成的支持,并無縫地支持 Spring 集成。
-
RESTful 服務支持:CXF 支持代表性狀態傳輸(Representational State Transfer,RESTful )服務的概念,并支持 Java 平臺的 JAX-RS 實現。(本系列的第 2 部分將提供有關 RESTful 服務的更多信息。)
-
對不同傳輸和綁定的支持:CXF 支持不同種類的傳輸,從 XML 到逗號分隔值 (CSV)。除了支持 SOAP 和 HTTP 協議綁定之外,它還支持 Java Architecture for XML Binding (JAXB) 和 AEGIS 數據綁定。
-
對非 XML 綁定的支持:CXF 支持非 XML 綁定,例如 JavaScript Object Notation (JSON) 和 Common Object Request Broker Architecture (CORBA)。它還支持 Java 業務集成(Java Business Integration,JBI)體系架構和服務組件體系架構(Service Component Architecture,SCA)。
-
code first 或者 xml first : 支持使用code first 或者 xml first 的方式來創建web服務。
功能特性
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。
項目目標
下面列出了來自 Apache CXF 官方網站的項目目標。
概要
高性能可擴展簡單且容易使用支持多種標準 支持 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、Data Bindings 和 Format
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 和固定記錄長度。
編輯本段Apache CXF特點
靈活部署
輕量級容器:可在 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;
CXF 框架支撐環境
CXF 框架是一種基于 Servlet 技術的 SOA 應用開發框架,要正常運行基于 CXF 應用框架開發的企業應用,除了 CXF 框架本身之外,還需要 JDK 和 Servlet 容器的支持。