張志剛


摘 要:REST(RepresentationalStateTransfer)表述性狀態轉移是目前比較流行的WebService架構風格,為軟件設計定義了一組架構約束和原則。REST的Java實現框架眾多,CXF集成了Celtix和XFire兩個開源框架,使得開發Webservice的工作變得更加簡單,靈活。文章介紹了CXF的基本概念,系統架構,并對CXF的功能模塊和實現原理進行了較為詳細的介紹。
關鍵詞:REST;CXF;RESTfulWebService;SpringMVC
REST是Roy Thomas Fielding博士于2000年在他的博士畢業論文中首次提出,中文翻譯為表述性狀態轉移,它是一種簡單,靈活的架構風格,主要思想是基于Http構建數據訪問接口。REST的所有操作均是無狀態的,針對不同的訪問請求,數據提供統一的接口,返回Json,XML等格式的數據。
目前,有多種基于Java的restful web servie實現方式,比較流行的包括Rails,Axis2,JAX-RS,Restlet,CXF等。其中CXF是一種輕量級的Restful實現框架,該框架已經成為Apache的頂級項目,它可以方便的與各種MVC框架結合使用,為企業級應用系統提供安全,可靠的數據支持。
一、CXF框架
1.概述
CXF是Apache下的一個頂級SOA簡單架構,它實現了企業服務總線ESB框架和設計模式。CXF是兩個開源項目Celtix和XFire結合的產物,極大的融合了二者的優點。CXF提供多種技術支持,包括web Servivce架構JAX-WS的支持,并支持Binding,DataBing等功能模塊的實現,CXF可以與Spring mvc等系統開發架構實現無縫集成使用。
CXF支持SOAP1.1,1.2和XML/HTTP等多種協議規則,通常使用JAX-WS規范作為Apache CXF webservice的實現規范。采用代碼優先(Code First)或者 WSDL 優先(WSDL First)可以非常輕松的實現 Web Services 的發布和使用。
2.CXF體系結構
CXF是基于REST架構風格實現的開源技術框架,提供了創建服務的編程模型。它包括七個主要的組成部分,分別是BUS,消息傳遞和攔截器(Messaging and Interceptors),前端(Front End),服務模型(Service Model), 數據綁定(Data Binding),端口綁定(Protocl Binding),傳輸(Transports)。其中,BUS是CXF的核心,它為資源的共享提供了可配置的環境。CXF通過消息處理中心,并通過建立攔截請求,方便開發人員進行消息傳遞,請求處理及錯誤處理。服務模型包括ServiceInfo和服務,數據通過前端創建,采用ServiceFactory來完成服務生成。數據綁定定義了傳輸層上數據的具體格式和協議,使開發者方便的進行消息的發送和接口。傳輸(Transports)層向綁定和前端屏蔽傳輸的具體細節。CXF的整體架構如下圖所示:
二、CXF實現RESTful Web Service的原理
當前CXF已經全面基于REST實現,通過底層封裝,使得開發人員只注重于業務邏輯開發,極大的簡化了開發web service的難度。
訪問服務提供方首先開發和調試Web service服務接口,調試通過后,web服務通過中介發布訪問服務接口,并在UDDI注冊中心進行信息注冊,實現服務的發布過程。Web service調用者向服務中介發出資源請求,中介將根據請求信息查詢UDDI注冊中心,并提供滿足請求條件的資源數據給服務請求者,實現數據綁定,返回的資源描述信息以WSDL形式顯示,并且Web頁面可以直接查詢資源信息,具體原理如下圖所示:
三、結語
針對Web service開發問題,本文介紹了一種比較新型的Java Restful實現架構CXF。從概念,體系結構和實現原理三個方面對CXF做了詳細介紹。隨著RPC,微服務等概念的興起,基于RESTful的web service相關技術將不斷完善和應用。
參考文獻:
[1]Fensel D, Bussler C. The Web Service Modeling Framework WSMF[J]. Electronic Commerce Research & Applications, 2003, 1(2):113-137.
[2]孫磊. 基于Spring+CXF實現用戶文件上傳的WebService[J]. 電腦編程技巧與維護, 2012(3):16-22.
[3]潘冰. 基于Rails的RESTful Web Service研究與實現[J]. 計算機應用與軟件, 2010, 27(10):188-190.
[4]文明瑤. 基于Jersey框架的RESTful Web Service的研究與實現[J]. 中國科技博覽, 2016(2):361-363.