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