spring整合webservice
?
?
主要講解點:
WebServiceCXF介紹(了解)
JAX-WS服務獨立發布及測試、JAX-WS整合spring開發及測試(了解)
JAX-RS服務獨立發布及測試、JAX-RS整合spring開發及測試、Restful架構風格(重點)
定區關聯客戶功能的實現(重點)
一、WebServiceCXF簡介(了解)
什么是WebService
WebService是一個平臺獨立的,低耦合的,自包含的、基于可編程的web的應用程序,可使用開放的XML標準來描述、發布、發現、協調和配置這些應用程序,用于開發分布式的互操作的應用程序。
很多個系統,進行分布的部署,分布的系統數據通信,解決技術就是WebService。
什么是CXF
Apache CXF = Celtix + XFire,開始叫 Apache CeltiXfire,后來更名為 Apache CXF 了,以下簡稱為 CXF。CXF 繼承了 Celtix 和 XFire 兩大開源項目的精華,提供了對 JAX-WS 全面的支持,并且提供了多種 Binding 、DataBinding、Transport 以及各種 Format 的支持,并且可以根據實際項目的需要,采用代碼優先(Code First)或者 WSDL 優先(WSDL First)來輕松地實現 Web Services 的發布和使用。Apache CXF已經是一個正式的Apache頂級項目。
官網:http://cxf.apache.org/ 最新版本:3.1.11
為什么用WebServiceCXF
CXF是目前最主流WebService開發框架,由Apache提供
CXF WebService開發,主要分為兩種服務提供方式WS、RS
4、兩種傳輸數據的方式
1)JAX-WS 傳輸數據,就是XML格式,基于SOAP協議(Simple Object Access protocol,簡單對象訪問協議)(了解)
2)JAX-RS傳輸數據,傳輸XML格式或者JSON格式,基于HTTP協議(重點)
二、JAX-WS服務獨立發布(能實現)
1、建立maven java項目
2、在項目中導入CXF jar包支持
要提供jaxws服務,引入jaxws的jar包,要提供jaxrs服務,引入jaxrs的jar包
導入maven坐標
查看完整日志
3、編寫服務端程序
1)編寫實體類
2)編寫服務
@WebService用在類上面,標記類是WebService服務提供對象
@WebMethod使用方法上面,標記方法是WebService服務提供方法
@WebService注解配置endPointInterface接口服務完整類名,servicename服務名稱
3)將UserService的服務方法,發布到網絡上,給其它系統調用
4)訪問地址:http://localhost:9999/userService?wsdl
WSDL:(Web Services Description Language) WSDL 文件是一個 XML 文檔,用于說明一組 SOAP 消息以及如何交換這些消息。大多數情況下由軟件自動生成和使用。
4、編寫客戶端操作
三、JAX-WS原理分析和日志消息顯示(了解,能說)
添加日志監控
四、JAX-WS整合spring服務器端開發(能實現)
1、建立maven web項目,基于tomcat發布服務
基于maven 導入坐標 CXF開發
Spring 開發
基于Spring測試開發
配置web.xml
CXF基于web訪問
2、導入實體類、Service
3、配置spring cxf服務發布
1)引入名稱空間
xmlns:jaxws=http://cxf.apache.org/jaxws
xsi:schemaLocation="http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
2)配置服務
3)配置啟動服務端口
4)訪問地址:http://localhost:9998/cxf_ws_spring/services/userService?wsdl
五、JAX-WS整合spring客戶端代碼測試(能實現)
1、applicationContext-test.xml配置
2、測試用例編寫
Restful架構風格簡介(重要,能說)
什么是Restful風格
Representational State Transfer
一種軟件架構風格,設計風格而不是標準,只是提供了一組設計原則和約束條件。它主要用于客戶端和服務器交互類的軟件?;谶@個風格設計的軟件可以更簡潔,更有層次,更易于實現緩存等機制。
在服務器端,應用程序狀態和功能可以分為各種資源。資源是一個有趣的概念實體,它向客戶端公開。資源的例子有:應用程序對象、數據庫記錄、算法等等。每個資源都使用 URI (Universal Resource Identifier) 得到一個唯一的地址。所有資源都共享統一的接口,以便在客戶端和服務器之間傳輸狀態。使用的是標準的 HTTP 方法,比如 GET、PUT、POST 和 DELETE。
Restful風格好處
基于這種風格架構,軟件編寫可以更簡潔
基于HTTP協議,支持多種消息格式,比如XML、JSON
3)更容易實現緩存機制(第一次訪問資源緩存到本地,第二次訪問資源,返回304,客戶端調用本地)200、 500 、404、304
3、樣例演示
POST請求方式訪問????????保存操作(增,英文:Create)
DELETE請求方式訪問????????刪除操作(刪,英文:Delete)
PUT 請求方式訪問????????????修改操作(改,英文:Update)
GET請求方式訪問????????????查詢操作(查,英文:Retrieve)
http://localhost:9997/userService/user????????查詢所有用戶信息
http://localhost:9997/userService/user/1 ????查詢用戶編號為1的用戶信息
小結:訪問服務器統一資源,采用不同HTTP協議請求方式,服務器端可以得知進行CRUD哪個操作
JAX-RS服務獨立發布(能實現)
建立maven項目
基于maven導入坐標
2、導入實體類
@XmlRootElement指定序列化(轉換XML)對象名字
3、編寫業務類
注解說明;
1)訪問資源路徑的注解:@Path
如果訪問saveUser方法 /userService/user
2)請求參數和返回值的注解:@Produces生成(方法返回值)@Consumes消費(方法????????參數)
????@Consumes 指定能夠處理客戶端傳遞過來數據格式
????@Produces 指定能夠生成哪種格式數據返回給客戶端
3)請求方式的注解:@GET查詢 @PUT 修改 @POST 增加 @DELETE 刪除
4、發布服務
八、JAX-RS客戶端WebClient的使用(會用)
1、客戶端程序的編寫
兩種方式:
1)使用http client工具,需要自己對HTTP協議內容進行定制和解析
2)WebClient工具類使用(CXF自帶)
九、JAX-RS服務通信添加json轉換支持(會用)
解決:pom引入json轉換器
十、JAX-RS整合spring服務器端開發(能實現)
1、建立maven項目
1)導入maven坐標
2)web.xml
?
2、導入實體類和Service
在spring配置發布rs服務
xmlns:jaxrs=http://cxf.apache.org/jaxrs
xsi:schemaLocation="http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd"
最終訪問資源服務路徑:
服務器根目錄地址+web.xml配置+applicationContext.xml address配置
+類@Path+方法@Path
1)applicationContext.xml配置
2)配置服務啟動端口
4、編寫客戶端代碼 類似獨立服務客戶端代碼
采用WebClient工具實現
?
如何選擇SOAP Webservice和Restful Webservice的使用,首先需要理解就是SOAP偏向于面向活動,有嚴格的規范和標準,包括安全,事務等各個方面的內容,同時SOAP強調操作方法和操作對象的分離,有WSDL文件規范和XSD文件分別對其定義。而REST強調面向資源,只要我們要操作的對象可以抽象為資源即可以使用REST架構風格。
?
十一、定區關聯客戶CRM系統服務接口編寫(重要) ????
此項目實現是右側顯示與當前定區關聯的客戶列表,左側顯示還沒有與定區關聯的列表
正常操作應該反過來設置
1、在crm_management項目中,要引入WebService CXF jar包
2、編寫webservice服務接口
????????
@Queryparam中,指定的是URL中的參數是以鍵值對的形式出現的,而在程序中@QueryParam("from") int from則讀出URL中from的值,如http://xxxx.xxx/xxx?from=10
而@pathparem中,URL中只出現參數的值,不出現鍵值對,比如: "/users/2011/06/30"
企業實際開發中 雙方先定接口,然后連調測試
十二、定區關聯客戶CRM業務接口實現(重要)
3、提供服務接口實現,連接數據庫完成功能
CRM系統已經導入Spring Data JPA
4、編寫DAO
十三、定區關聯客戶CRM系統服務發布(重要)
發布WebService服務
1、配置web.xml
2、applicationContext.xml
3、bug分析及解決
1)項目中原來Customer類的sex類型int,改為Integer更新表結構,加入數據為null
crm_management引入crm_domain來自本地maven倉庫(修改類型后,沒有重新install)
????
?
2)原因:實體類沒有添加@XmlRootElement注解
十四、定區關聯客戶窗口彈出發起Ajax請求數據(能實現)
1、判斷用戶是否只選擇了一個定區,如果是,彈出關聯客戶到定區的窗口
彈出關聯客戶窗口,有遮罩窗口
3、在窗口彈出時,向服務器發送兩個請求,獲取已關聯客戶和未關聯客戶列表
十五、定區關聯客戶窗口數據列表WebService遠程加載(重要)
4、編寫FixedAreaAction添加方法調用CRM WebService查詢數據
總結
以上是生活随笔為你收集整理的spring整合webservice的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Dubbo 2.7三大特性详解
- 下一篇: HBase的列族式存储介绍