




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、Webservice 第一天 jaxws編程方法 綜合案例Webservice課程安排:兩天課:第一天:什么是webservice?從案例(便民查詢網(wǎng)站)分析如何實現(xiàn)?使用socket實現(xiàn)。使用jaxws開發(fā)webservice。Webservice三要素Wsdl(webservice使用說明書)重點掌握Soap(jaxws開發(fā)webservice的傳輸協(xié)議)重點掌握UDDI(了解)Webservice的使用場景分析(掌握)學(xué)會jaxws基本開發(fā)方法(重點)Soap1.1和soap1.2區(qū)別:跟蹤soap協(xié)議綜合案例:使用webservice傳輸xml數(shù)據(jù)(重點掌握)第二天:Jaxws的深入開
2、發(fā):常用注解測試jaxws傳輸復(fù)雜對象類型CXF開發(fā)webservice:CXF入門程序Spring+cxf整合(重點)CXF發(fā)布rest的webservice。(重點)綜合案例:實現(xiàn)便民查詢網(wǎng)站1 便民網(wǎng)站分析1.1 需求通過便民網(wǎng)站,查詢?nèi)粘P畔ⅰ?.2 分析從遠程系統(tǒng)中獲取信息從遠程系統(tǒng)中獲取信息氣象局天氣信息表現(xiàn)層Html,css業(yè)務(wù)層service移動運營商手機號信息數(shù)據(jù)層dao數(shù)據(jù)庫,沒有天氣信息udptcp客戶端/服務(wù)器模式:服務(wù)端氣象局移動運營商客戶端自己開發(fā)便民查詢網(wǎng)站遠程調(diào)用Tcp:是一種傳輸層協(xié)議,是一種面向連接的協(xié)議,經(jīng)過三次握手客戶端和服務(wù)端連接一個連接(通道)。Tc
3、p傳輸數(shù)據(jù)時穩(wěn)定。Udp:是一種傳輸層協(xié)議,是一種數(shù)據(jù)報協(xié)議,速度是很快的,不穩(wěn)定的。它是面向非連接的協(xié)議,它不與對方建立連接,而是直接就把數(shù)據(jù)包發(fā)送過去最終采用tcp通信方式,客戶端向服務(wù)端發(fā)起請求,查詢天氣信息。1.3 Socket實現(xiàn)天氣查詢1、 jaxws開發(fā)webservice和socket對比分析2、 重視socket開發(fā),企業(yè)開發(fā)后臺服務(wù)常使用socket。a) 服務(wù)端要有可持續(xù)運行能力,保證線程一直在運行b) 并發(fā)處理能力,要使用多線程1.3.1 分析outputstreaminputstreaminputstreamoutputstream客戶端連接socket服務(wù)端服務(wù)端使
4、用ServerSocket創(chuàng)建socket服務(wù)端1.3.2 實現(xiàn) 準(zhǔn)備環(huán)境:Jdk2Eclipse indigoMysql.2 創(chuàng)建服務(wù)端: 創(chuàng)建客戶端:1.3.3 小結(jié)使用socket傳輸數(shù)據(jù)需要程序員關(guān)注如何解析數(shù)據(jù)流。設(shè)想,如果可以面向?qū)ο箝_發(fā),直接傳輸java對象,減輕程序員開發(fā)的復(fù)雜度。1.4 Java開發(fā)webserviceJAVA 中共有三種WebService 規(guī)范,分別是JAX-WS(JAX-RPC)、JAXM&SAAJ、JAX-RS。1.4.1 Jaxws(掌握)JAX-WS 的全稱為 Java API for XM
5、L-Based Webservices ,早期的基于SOAP 的JAVA 的Web 服務(wù)規(guī)范JAX-RPC(Java API For XML-Remote Procedure Call)目前已經(jīng)被JAX-WS 規(guī)范取代。從java5開始支持JAX-WS2.0版本,Jdk1.6.0_13以后的版本支持2.1版本,jdk1.7支持2.2版本。Jaxws開發(fā)的webservice傳輸soap協(xié)議。1.4.2 JAXM&SAAJ(了解)JAXM(JAVA API For XML Message)主要定義了包含了發(fā)送和接收消息所需的API,SAAJ(SOAP With Attachment API Fo
6、r Java,JSR 67)是與JAXM 搭配使用的API,為構(gòu)建SOAP 包和解析SOAP 包提供了重要的支持,支持附件傳輸?shù)?,JAXM&SAAJ 與JAX-WS 都是基于SOAP 的Web 服務(wù),相比之下JAXM&SAAJ 暴漏了SOAP更多的底層細節(jié),編碼比較麻煩,而JAX-WS 更加抽象,隱藏了更多的細節(jié),更加面向?qū)ο螅瑢崿F(xiàn)起來你基本上不需要關(guān)心SOAP 的任何細節(jié)JAXM&SAAJ 暴漏了SOAP更多的底層細節(jié),編碼比較麻煩,JAXM&SAAJ通常不使用。1.4.3 JAX-RS(掌握)JAX-RS 是JAVA 針對REST(Representation State Transfer
7、)風(fēng)格制定的一套Web 服務(wù)規(guī)范,由于推出的較晚,該規(guī)范(JSR 311,目前JAX-RS 的版本為1.0)并未隨JDK1.6 一起發(fā)行。Rest定義參考:理解RESTful架構(gòu).docx需要大家重視,當(dāng)前比較流行,因為jax-RS可以發(fā)布 rest風(fēng)格webservice,因為rest的webservice不采用soap傳輸,直接采用http傳輸,可以返回xml或json,比較輕量。1.5 Jaxws實現(xiàn)天氣查詢支持java面向?qū)ο箝_發(fā)。1.5.1 服務(wù)端定義java接口,提供天所查詢方法。 SEI編寫SEI(Service Endpoint Interface),SEI在we
8、bservice中稱為portType,在java中稱為接口public interface WeatherInterface /根據(jù) 城市名稱查詢天氣信息public String queryWeather(String cityName); SEI實現(xiàn)類 發(fā)布webservice服務(wù)錯誤:發(fā)布服務(wù),如果服務(wù)端口已被暫用報錯: 驗證webservice服務(wù)是否發(fā)布成功在webservice的地址后邊添加?wsdl,查詢webservice的使用說明書內(nèi)容是否完整,如果wsdl內(nèi)容完整,表示webservice發(fā)布成功。閱讀 wsdl方法:Wsdl是x
9、ml格式文檔。從下往上讀。找到service:里邊有port,Binding最終通過binding找到portTypeportType有方法,調(diào)用webservice就是調(diào)用porttype的方法。最終找到porttype,其中有方法,說明 wsdl文檔基本上完整。必須存在調(diào)用服務(wù)類及方法。1.5.2 客戶端支持面向?qū)ο箝_發(fā)??蛻舳斯δ苷{(diào)用webservice,先知道webservice地址:一般情況下,只要知道 wsdl的地址,就可以知道 webservice地址。天氣查詢服務(wù)地址::12345/weather?wsdl 閱讀wsdl找到servi
10、ce(服務(wù)視圖)通過binding找到portType(服務(wù)端點) 使用wsimport生成webservice的客戶端調(diào)用代碼Wsimport:是jdk提供的一個工具,作用是根據(jù)webservice的wsdl地址生成客戶端調(diào)用代碼。單獨創(chuàng)建一個工程wsimport存放生成代碼.通過cmd進入工程wsimport目錄。生成代碼:默認(rèn)生成的代碼所在包名,是wsdl中命名空間的倒序。可以通過wsimport p指定包名。詳細參見筆記。 將生成 的代碼拷貝到客戶端工程中編寫客戶端程序:2 Webservice與socket的區(qū)別(重點理解)Socket:是一種傳輸層的協(xié)議
11、。常用tcp、udp。Socket是操作系統(tǒng) 提供的一套網(wǎng)絡(luò)接口,不同的編程語言都有實現(xiàn) 。Socket是跨平臺的。傳輸數(shù)據(jù)時需要程序員自己解析數(shù)據(jù)流。優(yōu)點 :傳輸速度很快。應(yīng)用場景:如果要考慮傳輸速度,優(yōu)先使用SocketWebservice使用soap協(xié)議:基于http的應(yīng)用層協(xié)議,http也是應(yīng)用層協(xié)議,基于socket傳輸數(shù)據(jù)。http或soap都是跨平臺的。soap在http協(xié)議的基礎(chǔ)上,一個基于XML的協(xié)議。不同:都是底層的通信協(xié)議,請求包的格式不同而已,soap包是XML格式,http純文本格式。Jaxws開發(fā)Webservice,傳輸數(shù)據(jù)庫是面向?qū)ο蠓绞?,不用程序員自己解析數(shù)據(jù)
12、流。Webservice如何傳輸數(shù)據(jù):Java對象 依據(jù)XSD(webservice數(shù)據(jù)類型標(biāo)準(zhǔn))將java對象進行序列化成soap協(xié)議Java對象客戶端服務(wù)端因為webservice要經(jīng)過兩次序列化,傳輸速度不快。缺點:傳輸速度慢。優(yōu)點:面向?qū)ο?開發(fā),soap協(xié)議是一個標(biāo)準(zhǔn)協(xié)議,方便進行跨平臺、跨公司進行接口開發(fā)。應(yīng)用場景:不考慮傳輸速度前提下,根據(jù)soap標(biāo)準(zhǔn)協(xié)議,方便進行接口定義。3 什么是webserviceweb 服務(wù)+跨平臺+遠程調(diào)用+soap協(xié)議傳輸數(shù)據(jù)3.1 定義Webservice即web 服務(wù),是一種跨平臺的遠程調(diào)用技術(shù),基于http的soap協(xié)議傳輸數(shù)據(jù),也可以直接使用
13、http傳輸數(shù)據(jù)。l Web service 即web服務(wù),它是一種跨編程語言和跨操作系統(tǒng)平臺的遠程調(diào)用技術(shù)即跨平臺遠程調(diào)用技術(shù)。l 采用標(biāo)準(zhǔn)SOAP(Simple Object Access Protocol) 協(xié)議傳輸,soap屬于w3c標(biāo)準(zhǔn)。Soap協(xié)議是基于http的應(yīng)用層協(xié)議,soap協(xié)議傳輸是xml數(shù)據(jù)。l 采用wsdl作為描述語言即webservice使用說明書,wsdl屬w3c標(biāo)準(zhǔn)。l xml是webservice的跨平臺的基礎(chǔ),XML主要的優(yōu)點在于它既與平臺無關(guān),又與廠商無關(guān)。l XSD,W3C為webservice制定了一套傳輸數(shù)據(jù)類型,使用xml進行描述,即XSD(XML
14、 Schema Datatypes),任何編程語言寫的webservice接口在發(fā)送數(shù)據(jù)時都要轉(zhuǎn)換成webservice標(biāo)準(zhǔn)的XSD發(fā)送。當(dāng)前非SOAP協(xié)議的webService以輕量為首要目標(biāo),比如rest webservice也是webservice的一種方式。3.2 webService三要素3.2.1 soapsoap協(xié)議是webservice是傳輸協(xié)議,即簡單對象訪問協(xié)議。Soap協(xié)議是xml格式,理解為基于http傳輸xml數(shù)據(jù)。Soap=http+xml3.2.2 wsdlwsdl是webservice的使用說明書。根據(jù)wsdl去如何調(diào)用webservice。從下往上讀,找到se
15、rvice服務(wù)視圖,通過binding找到portType(服務(wù)類)。3.2.3 UDDI(了解)UDDI是一個目錄服務(wù),存儲了全球的webservice地址。UDDI旨在將全球的webservcie資源進行共享,促進全球經(jīng)濟合作。3.3 Webservice應(yīng)用場景單點登陸,將登陸驗證接口暴漏出來,可以 以webservice的接口來暴漏。統(tǒng)一來記錄用戶信息3.3.1 用于分布式應(yīng)用集成,實現(xiàn)軟件重用http、soap系統(tǒng)B系統(tǒng)A系統(tǒng)A和系統(tǒng)B可以通過單點登陸系統(tǒng)進行用戶身份認(rèn)證。單點登陸系統(tǒng):將用戶登陸功能抽取出來,組成一個單獨系統(tǒng),達到軟件重用的目標(biāo)。用戶信息可以在單點登陸系統(tǒng)一處存儲,
16、系統(tǒng)A和系統(tǒng)B不用記錄用戶信息,方便有效進行系統(tǒng)集成。3.3.2 建議不用webservice同構(gòu)程序間通信可以不用webservice,前提是多個同構(gòu)程序是相同的公司開發(fā)的。比如:一個公司作了兩個程序,都 是java,采用java提供一個遠程調(diào)用技術(shù),RMI。RMI 指的是遠程方法調(diào)用 (Remote Method Invocation)。RMI基于socket傳輸數(shù)據(jù),支持面向?qū)ο螅萻oap協(xié)議傳輸快。SocketRMIsoap3.3.3 建議使用webservicel 公開接口:在互聯(lián)網(wǎng)發(fā)布服務(wù)接口,不考慮客戶端的類型,使用webservice發(fā)布服務(wù)。因為webservice基于s
17、oap協(xié)議(w3c標(biāo)準(zhǔn)協(xié)議),所以使用soap發(fā)布服務(wù)。l 調(diào)用webservice服務(wù)端由于webservice服務(wù)端已確定,作為客戶端別無選擇。3.4 Webservice優(yōu)缺點3.4.1 優(yōu)點:1 、采用xml支持跨平臺遠程調(diào)用。2、基于http的soap協(xié)議,可跨越防火墻。(因為SOAP一般使用HTTP協(xié)議,而服務(wù)器的這個協(xié)議一般都是開放的,而且是可以穿過防火墻的)3、支持面向?qū)ο箝_發(fā)。4、有利于軟件和數(shù)據(jù)重用,實現(xiàn)松耦合。3.4.2 缺點:1、 由于soap是基于xml傳輸,本身使用xml傳輸會傳輸一些無關(guān)的東西從而效率不高,隨著soap協(xié)議的完善,soap協(xié)議增加了許多內(nèi)容,這樣就
18、導(dǎo)致了使用soap協(xié)議去完成簡單的數(shù)據(jù)傳輸?shù)男什桓摺H绻苯佑胔ttp傳輸自定義數(shù)據(jù)內(nèi)容比webservice開發(fā)更快捷,例如第三方支付公司的支持接口。3.5 小結(jié)Webservice是基于http發(fā)布web 服務(wù),可以采用soap協(xié)議作為傳輸數(shù)據(jù)格式,也可以直接使用http傳輸數(shù)據(jù),比如rest方式。3.6 再談socket和webservice應(yīng)用場景Socket:優(yōu)點:傳輸速度快缺點:需要手動解析數(shù)據(jù)流,如果用socket傳輸數(shù)據(jù)需要接口雙方定義接口協(xié)議格式(傳什么格式xml,傳什么json?),自定義協(xié)議,不方便進行接口開發(fā)。場景:要考慮傳輸速度,優(yōu)先使用socket,但是需要自定義
19、協(xié)議(接口雙方定義一個傳輸?shù)臄?shù)據(jù)格式)。Socket開發(fā):注意:socket服務(wù)可持續(xù)性,高并發(fā)性。Webservice:優(yōu)點:采用標(biāo)準(zhǔn)soap協(xié)議,接口雙方只要遵循標(biāo)準(zhǔn)協(xié)議開發(fā)使用接口。通過wsdl知道接口內(nèi)容。方便進行接口開發(fā)。缺點:傳輸速度慢。場景:公開接口,在不考慮客戶端類型或傳輸性能,接口面向整個互聯(lián)網(wǎng),優(yōu)先考慮webservice。Webservice性能差的原因:如果傳輸soap經(jīng)過兩次對象序列化,webservice的性能依賴中間件的性能。4 wsdl4.1 定義WSDL 指網(wǎng)絡(luò)服務(wù)描述語言(Web Services Description Language)。WSDL是一種使
20、用 XML 編寫的文檔。這種文檔可描述某個 Web service。它可規(guī)定服務(wù)的位置,以及此服務(wù)提供的操作(或方法)。WSDL 是一種 XML 文檔WSDL 用于描述網(wǎng)絡(luò)服務(wù)WSDL 也可用于定位網(wǎng)絡(luò)服務(wù)通過wsdl知道webservice如何調(diào)用。4.2 說明書結(jié)構(gòu)從下往上讀: 服務(wù)視圖,webservice的服務(wù)結(jié)點,它包括了服務(wù)端點 為每個服務(wù)端點定義消息格式和協(xié)議細節(jié) 服務(wù)端點,描述 web service可被執(zhí)行的操作方法,以及相關(guān)的消息,通過binding指向portType 定義一個操作(方法)的數(shù)據(jù)參數(shù)(可有多個參數(shù)) 定義 web service 使用的全部數(shù)據(jù)類型4.3
21、公網(wǎng)天氣查詢開發(fā)只需要開發(fā)查詢公網(wǎng)天氣客戶端4.3.1 閱讀 wsdlService服務(wù)視圖:portType服務(wù)端點:4.3.2 使用wsimport生成客戶端調(diào)用代碼需要知道wsdl的地址。Wsimport不支持soap1.2的客戶端代碼生成。4.3.3 將生成代碼拷貝到工程中,開發(fā)客戶端使用客戶端生成代碼調(diào)用服務(wù)端:4.3.4 小結(jié)使用客戶端生成的代碼調(diào)用服務(wù)端,缺點:將webservice的地址封裝在生成代碼中,如果將來webservice地址改變,需要重新生成,修改客戶端調(diào)用代碼。不方便系統(tǒng)維護。5 上午課程回顧什么是webservice?Webservice即web服務(wù),基于htt
22、p的soap 協(xié)議傳輸,也可以只基于http傳輸數(shù)據(jù)。什么是Wsdl?Wsdl就是網(wǎng)絡(luò)服務(wù)的描述語言,即webservice的使用說明書。從下往上讀:先找到service服務(wù)視圖再通過binding找到portType找到portType中的服務(wù)方法Jaxws開發(fā)webservice步驟:服務(wù)端開發(fā):定義SEI(service endpoint interface)服務(wù)端點,即portType,在java中是接口定義SEI的實現(xiàn)類,類上邊使用webservice注解標(biāo)記它是一個webservice服務(wù)類。發(fā)布服務(wù):/第一個參數(shù):webservice的地址/第二個參數(shù):使用webService標(biāo)
23、記的服務(wù)對象Endpoint.publish(:12345/weather, new WeatherInterfaceImpl();客戶端開發(fā):第一種方法:使用客戶端生成代碼調(diào)用webservice。第一步:Wsimport根據(jù) wsdl生成客戶端調(diào)用代碼第二步:將生成的代碼拷貝到工程中編寫客戶端代碼1 創(chuàng)建Service服務(wù)視圖2 通過服務(wù)視圖得到portType3 調(diào)用portType方法此方法缺點:將webservice的地址在生成代碼寫死 了,如果webservice地址變更需要重新生成代碼。系統(tǒng)維護不方便。6 客戶端開發(fā)第二種方法Jaxws標(biāo)準(zhǔn)方法:6.
24、1 使用jdk的service類調(diào)用webservice。6.2 使用jaxws標(biāo)準(zhǔn)方法調(diào)用公網(wǎng)天氣查詢:6.3 小結(jié)使用jaxws標(biāo)準(zhǔn)方法調(diào)用webservice可以指定webservice地調(diào)用地址,比通過生成代碼調(diào)用webservice要靈活!7 soap7.1 定義soap,簡單對象訪問協(xié)議,基于http傳輸xml數(shù)據(jù),soap協(xié)議體是xml格式。SOAP 是一種網(wǎng)絡(luò)通信協(xié)議SOAP即Simple Object Access Protocol簡易對象訪問協(xié)議SOAP 用于跨平臺應(yīng)用程序之間的通信SOAP 被設(shè)計用來通過因特網(wǎng)(http)進行通信SOAP HTTP+XML,其實就是通過H
25、TTP發(fā)xml數(shù)據(jù)SOAP 很簡單并可擴展支持面向?qū)ο骃OAP 允許您跨越防火墻SOAP 將被作為 W3C 標(biāo)準(zhǔn)來發(fā)展7.2 使用TCP/IP Monitor監(jiān)視Soap協(xié)議7.2.1 TCP/IP Monitor配置TCP/IP Monitor:是eclipse自帶的一個工具,通過代理的方法監(jiān)視tcp協(xié)議內(nèi)容。通過TCP/IP Monitor監(jiān)視soap協(xié)議內(nèi)容。TCP/IP Monitor代理,將客戶端請求轉(zhuǎn)發(fā)給服務(wù)端Webservice服務(wù)端Webservice客戶端TCP/IP Monitor配置:7.2.2 測試:編寫webservice客戶端,向代理端口中發(fā)送數(shù)據(jù)。地址:http:
26、/:54321/weather?wsdl客戶端請求的soap協(xié)議內(nèi)容:POST /weather HTTP/1.1Accept: text/xml, multipart/relatedContent-Type: text/xml; charset=utf-8SOAPAction: User-Agent: JAX-WS RI 2.2.4-b01Host: :54321Connection: keep-aliveContent-Length: 226Soap協(xié)議體內(nèi)容:Xml格式。ns2:queryWeather xmlns:ns2=鄭州響應(yīng)內(nèi)容:HTTP/1.
27、1 200 OKTransfer-encoding: chunkedContent-type: text/xml; charset=utf-8Date: Tue, 30 Dec 2014 06:40:50 GMTns2:queryWeatherResponse xmlns:ns2=晴7.2.3 Soap協(xié)議體內(nèi)容必需有 Envelope 元素,此元素將整個 XML 文檔標(biāo)識為一條 SOAP 消息可選的 Header 元素,包含頭部信息必需有Body 元素,包含所有的調(diào)用和響應(yīng)信息 可選的 Fault 元素,提供有關(guān)在處理此消息所發(fā)生錯誤的信息 . . . . . . Soap協(xié)議常用1.1和1
28、.2兩個版本。7.3 通過http發(fā)送soap協(xié)議體(xml)7.3.1 思路 模擬一個http的客戶端(相當(dāng)于一個瀏覽器),客戶端通過程序?qū)崿F(xiàn),向webservice的服務(wù)端發(fā)送soap協(xié)議(xml)。http客戶端意義(掌握):在企業(yè)開發(fā)中,很多都 是http接口,需要寫程序模擬http請求,請求數(shù)據(jù)解析數(shù)據(jù)。7.3.2 實現(xiàn)/開啟 一個http鏈接/webservice地址URL url = new URL(:12345/weather);HttpURLConnection httpURLConnection = (HttpURLConnection) ur
29、l.openConnection();/設(shè)置post請求,post是大寫httpURLConnection.setRequestMethod(POST);/Content-Type: text/xml; charset=utf-8httpURLConnection.setRequestProperty(Content-Type, text/xml; charset=utf-8);/設(shè)置請求和響應(yīng)httpURLConnection.setDoInput(true);httpURLConnection.setDoOutput(true);String requestString = request
30、String(鄭州);/發(fā)送soap協(xié)議httpURLConnection.getOutputStream().write(requestString.getBytes();/接收響應(yīng)內(nèi)容InputStream inputStream = httpURLConnection.getInputStream();ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();int len=-1;byte b = new byte1024;/將inputStream內(nèi)容寫到byteArrayOutputStream
31、while(len= inputStream.read(b, 0, 1024)!=-1)byteArrayOutputStream.write(b, 0, len);/獲取響應(yīng)內(nèi)容 String responseString = byteArrayOutputStream.toString();System.out.println(responseString);/解析響應(yīng)的xml數(shù)據(jù)。/.inputStream.close();byteArrayOutputStream.close();7.3.3 課后作業(yè)上網(wǎng)查找 httpclient的使用方法:/Ht
32、tpclient就是模擬http的請求,在企業(yè)開發(fā)中通過httpclient向http服務(wù)端請求,獲取接口內(nèi)容。7.3.4 Soap1.2協(xié)議測試如何將service類發(fā)布soap1.2:在SEI實現(xiàn)類上添加如下注解BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)Soap1.2要發(fā)布,需要下載擴展包:Jaxws實現(xiàn)soap1.2需要加入jaxws擴展包,從sun下載jaxws-ri-2.2.8,解壓jaxws-ri-2.2.8并將lib下的jar包加載到j(luò)ava工程中。修改service代碼:Wsdl內(nèi)容,有soap12
33、前綴:soap1.2請求和響應(yīng):請求內(nèi)容:POST /weather HTTP/1.1Accept: application/soap+xml, multipart/relatedContent-Type: application/soap+xml; charset=utf-8;action=User-Agent: JAX-WS RI 2.2.4-b01Host: :54321Connection: keep-aliveContent-Length: 224ns2:queryWeather xmlns:ns2=鄭州響應(yīng)內(nèi)容:HTTP/1.1 200 OKTransfer-en
34、coding: chunkedContent-type: application/soap+xml; charset=utf-8Date: Tue, 30 Dec 2014 07:39:51 GMTns2:queryWeatherResponse xmlns:ns2=晴7.3.5 Soap1.1和soap1.2對比Soap1.1版本:通過http進行post請求。Content-Type: text/xml; charset=utf-8Soap1.1命名空間:/soap/envelope/Soap1.2版本:Post請求Content-Type
35、: application/soap+xml;soap1.2命名空間:/2003/05/soap-envelopesoap1.1的服務(wù)端需要soap11客戶端調(diào)用soap1.2的服務(wù)端soap1.1客戶端和soap1.2客戶端都 可以調(diào)用。8 Webservice客戶端開發(fā)方法總結(jié)8.1 使用客戶端生成代碼方法第一步:使用wsimport或其它工具(比如cxf的wsdl2java)生成客戶端的調(diào)用第二步:使用生成代碼調(diào)用webservice服務(wù)端使用生成的service服務(wù)視圖類創(chuàng)建服務(wù)視圖對象調(diào)用service服務(wù)對象的getPortXXX方法得到portTy
36、pe。/創(chuàng)建服務(wù)視圖對象WeatherInterfaceImplService weatherInterfaceImplService =new WeatherInterfaceImplService();/通過服務(wù)視圖得到portType(接口類型)WeatherInterfaceImpl weatherInterfaceImpl = weatherInterfaceImplService.getWeatherInterfaceImplPort();/調(diào)用webservice方法String result = weatherInterfaceImpl.queryWeather(鄭州);8.2
37、 使用jaxws標(biāo)準(zhǔn)方法(Service類)(推薦使用)第一步:使用wsimport或其它工具(比如cxf的wsdl2java)生成客戶端的調(diào)用第二步:使用url、qname、service調(diào)用服務(wù)端/wsdl的路徑URL wsdlDocumentLocation = new URL(:54321/weather?wsdl);/從wsdl中找到服務(wù)視圖/第一個參數(shù):wsdl的命名空間/第二個參數(shù):服務(wù)視圖名稱QName serviceName = new QName( WeatherInterfaceImplService);/第一步使用Service創(chuàng)建服務(wù)視圖
38、Service service =Service.create(wsdlDocumentLocation, serviceName);/從服務(wù)視圖得到portType對象/參數(shù):portTypeWeatherInterfaceImpl weatherInterfaceImpl = service.getPort(WeatherInterfaceImpl.class);8.3 模擬http客戶端調(diào)用webservice服務(wù)(掌握)使用HttpURLConnection或apache的Httpclient模擬http請求,調(diào)用webservice。注意:使用此方法不需要生成客戶端調(diào)用代碼。9 webservice案例(webservice發(fā)送xml)9.1 目標(biāo)企業(yè)開發(fā)中常用web
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 租地合同附屬協(xié)議
- 山東省濟寧市任城區(qū)2024-2025學(xué)年七年級上學(xué)期期末生物學(xué)試題(含答案)
- 湖南省郴州市2024-2025學(xué)年高一上學(xué)期期末考試生物學(xué)試題(含答案)
- 離婚協(xié)議書條款補充協(xié)議
- 初中數(shù)學(xué)競賽指導(dǎo)策略訓(xùn)練課教案
- 水務(wù)工程設(shè)計與施工合同管理協(xié)議
- 非謂語動詞的用法與解析:高中英語語法
- (一模)2025屆安徽省“江南十?!备呷?lián)考地理試卷(含官方答案)
- 電氣物資知識培訓(xùn)課件
- 水療產(chǎn)品知識培訓(xùn)課件
- 《數(shù)字電子技術(shù)基礎(chǔ) 第4版》 課件 第 1 章 數(shù)字電路基礎(chǔ)(第4版)
- 高速鐵路客運組織與服務(wù)通用課件
- 物業(yè)管理費測算及物業(yè)增收途徑課件
- 歡樂的那達慕混聲合唱簡譜
- 【初中語文】羈旅思鄉(xiāng)類(10首)+中考語文必考古詩賞析(84首)(意象大全)
- JGJ107-2010鋼筋機械連接技術(shù)規(guī)程課件
- 季節(jié)性疾病防治知識講座
- PPR給水管技術(shù)交底樣本
- 中國李氏家譜模板
- 分布式光伏發(fā)電并網(wǎng)與運維管理
- 《計算機應(yīng)用基礎(chǔ) Win10+Office 2016》教案 模塊一 計算機基礎(chǔ)知識(二)
評論
0/150
提交評論