CXF框架的使用

CXF框架的使用

- CXF是什麼?
Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,現在已經正式更名爲 Apache CXF 了,以下簡稱爲 CXF。CXF 是一個開源的 Services 框架,這些 Services 可以支持多種協議,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,並且可以在多種傳輸協議上運行,比如:HTTP、JMS 或者 JBI,CXF 大大簡化了 Services 的創建,同時它繼承了 XFire 傳統,一樣可以天然地和 Spring 進行無縫集成。
- 使用準備
安裝、配置、準備minijar包
- 實現步驟
1 服務端
創建項目並且導入jar
準備本地服務接口及實現類
標記爲遠程服務
使用cxf的語法發佈服務
測試
2 客戶端
創建項目並且導入jar
使用wsdl生生成本地服接口
獲取本地代理對象
完成遠程調用
wsdl2java -d . -p com.jbzhang.ws.cxfclient http://192.168.1.11:8888/hello?wsdl

  • 關於攔截器

什麼是攔截器?
就是在客戶端訪問服務端的時候,在期間添加攔截器完成一些額外的功能。CXF已經提供了一些日誌攔截器,可以直接使用。
使用自帶的日誌攔截器:LoggingInInterceptor 信息輸入時的攔截器-請求
LoggingOutInterceptor 信息輸出時的攔截器-響應

那麼攔截器如何使用?使用的時機是什麼?如下圖所示:

在這裏插入圖片描述

爲什麼做權限攔截?
爲了控制遠程服務的訪問權限
怎麼做?
1.用戶在運營平臺註冊用戶,並且申請對應接口的訪問權限-這個用戶就擁有了權限
2.用戶訪問服務時需攜帶用戶信息到服務端,權限出去攔截器攜帶客戶信息
3.服務端獲取用戶信息是否有權限,權限的進來攔截器獲取客戶信息,判斷是否有權限

權限攔截器和日誌攔截器是否有順序?
1.對於客戶端日誌攔截器應在最後,確保後面有攔截器改了soap修改而日誌攔截器沒有打印出來。
2.對於服務端日誌攔截器應在最前,確保前面不會有攔截器修改SOAP消息。

怎麼確保順序?
創建攔截器時,要爲攔截器制定對應的階段,通過攔截器的不同階段來控制對應的順序
隨着程序的執行,到達對應階段的時候,就調用對應的攔截器。

創建一個自定義攔截器的步驟:
1.創建一個自定義的攔截器類,繼承 AbstractPhaseInterceptor
2.給自定義攔截器實現邏輯
3.把攔截器添加到服務端或者客戶端

/***********************************************************************************/
下面是一個可以用於練習建立客戶端的網站:
http://www.webxml.com.cn/zh_cn/web_services.aspx

創建一箇中英文翻譯的客戶端:
wsdl2java -d . -p com.jbzhang.ws.cxftranslateclient http://fy.webxml.com.cn/webservices/EnglishChinese.asmx?wsdl

執行以上命令報錯:
WSDLToJava Error: http://fy.webxml.com.cn/webservices/EnglishChinese.asmx?wsdl [19,19]: undefined element declaration ‘s:schema’
http://fy.webxml.com.cn/webservices/EnglishChinese.asmx?wsdl [105,13]: undefined element declaration ‘s:schema’
只能另存在本地,刪除 ‘s:schema’ 的引用
執行如下命令:
wsimport -keep C:\Users\Admin\Desktop\EnglishChinese.asmx.xml

會生成具體的代碼

此處練習的源碼已上傳至github,鏈接如下
https://github.com/OsiyeA/The-Code-of-WebService.git

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