Java網(wǎng)絡(luò)編程技術(shù)-14_第1頁(yè)
Java網(wǎng)絡(luò)編程技術(shù)-14_第2頁(yè)
Java網(wǎng)絡(luò)編程技術(shù)-14_第3頁(yè)
Java網(wǎng)絡(luò)編程技術(shù)-14_第4頁(yè)
Java網(wǎng)絡(luò)編程技術(shù)-14_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第14章WebService應(yīng)用

基于SOAP協(xié)議的訂單查詢(xún)214.1Soap簡(jiǎn)介 Soap〔SimpleObjectAccessProtocol〕,是一種基于XML的協(xié)議。利用Soap協(xié)議,有助于實(shí)現(xiàn)跨平臺(tái)、與特定接口無(wú)關(guān)的分布式系統(tǒng)。 Soap是實(shí)現(xiàn)Webservice的一種技術(shù),Soap是一種簡(jiǎn)單的、靈活的第二代XML協(xié)議標(biāo)準(zhǔn),是一種基于XML普遍使用的分布式計(jì)算根底結(jié)構(gòu)標(biāo)準(zhǔn),是一種利用XML解決數(shù)據(jù)交換問(wèn)題、適合構(gòu)建分布式結(jié)構(gòu)系統(tǒng)的技術(shù)。Soap建立在XML之上,利用XML實(shí)現(xiàn)Web效勞。3Soap機(jī)制

通信單元封裝機(jī)制:Soap中,所有信息都會(huì)封裝在一個(gè)可確認(rèn)的Soap消息包,包中可以有任意數(shù)目的消息頭和一個(gè)消息體,消息體中可以存放任何格式的XML文檔,消息頭用來(lái)存放除消息體之外的信息。錯(cuò)誤處理機(jī)制:Soap可以診斷錯(cuò)誤源和錯(cuò)誤原因,并且允許將錯(cuò)誤信息在交互這之間共享。擴(kuò)展機(jī)制:借助于XML模式和名字空間,Soap的演進(jìn)也將無(wú)障礙、無(wú)約束。目前,Soap典型的擴(kuò)展是通過(guò)Soap的消息頭實(shí)現(xiàn),利用這個(gè)特性,可以再Soap上構(gòu)建一個(gè)更為復(fù)雜的系統(tǒng)。4

數(shù)據(jù)表示機(jī)制:Soap提供了以XML格式表示根本數(shù)據(jù)類(lèi)型這樣的抽象的數(shù)據(jù)結(jié)構(gòu)的規(guī)那么,也提供了允許數(shù)據(jù)對(duì)象以某種形式序列化后進(jìn)行交換的規(guī)那么。遠(yuǎn)程過(guò)程調(diào)用〔RPC〕和Soap消息響應(yīng)機(jī)制。RPC是最常用的分布式計(jì)算遠(yuǎn)程調(diào)用,Soap支持RPC的遠(yuǎn)程調(diào)用方式,并以Soap消息作為RPC調(diào)用的響應(yīng),在編程方式上提供了靈活性。以文檔為中心的機(jī)制:以文檔為中心的XML更加符合商務(wù)交互中的數(shù)據(jù)模型,Soap提供了以文檔為中心的方法,有利于商務(wù)間的數(shù)據(jù)交換,彌補(bǔ)了RPC在某些個(gè)面的缺乏?;贖TTP協(xié)議的機(jī)制:HTTP是應(yīng)用最為廣泛的協(xié)議之一。Soap提供了對(duì)HTTP非常好的支持。但并不是說(shuō)Soap只能應(yīng)用于HTTP之上,Soap支持任何開(kāi)放的通信協(xié)議。在HTTP協(xié)議上的應(yīng)用非常廣泛。514.2WebService:

WebService是一種接口,它對(duì)外提供一組操作,利用網(wǎng)絡(luò),通過(guò)使用標(biāo)準(zhǔn)的XML傳遞技術(shù)來(lái)訪(fǎng)問(wèn)這個(gè)接口。WebService并不是必須存在于WWW之上,同樣可以架設(shè)在任何開(kāi)放的互聯(lián)網(wǎng)協(xié)議〔如HTTP、SMTP、FTP等〕和專(zhuān)網(wǎng)〔EDI〕上。WebService的實(shí)現(xiàn)與調(diào)用該效勞的客戶(hù)端無(wú)關(guān)。調(diào)用WebService的客戶(hù)端完全不需要知道WebService的實(shí)現(xiàn)細(xì)節(jié)和平臺(tái)特性,只要知道WebService對(duì)外聲明的接口。614.3XML

XML〔eXtensiibleMarkupLanguage〕

是一種具有數(shù)據(jù)描述功能,高度結(jié)構(gòu)性及可驗(yàn)證行的語(yǔ)言。XMLstandsforEXtensibleMarkupLanguage

XMLisamarkuplanguagemuchlikeHTML

XMLwasdesignedtodescribedata

XMLtagsarenotpredefined.Youmustdefineyourowntags

XMLusesaDocumentTypeDefinition(DTD)oranXMLSchematodescribethedata

XMLwithaDTDorXMLSchemaisdesignedtobeself-descriptive

XMLisaW3CRecommendation

714.4.搭建SOAP開(kāi)發(fā)環(huán)境

ApacheAxis:ApacheAxis是基于Java的最好的Web引擎之一。大多數(shù)情況下,AxisAPI以RPC方式發(fā)出請(qǐng)求,部署在Axis應(yīng)用的WebService也通過(guò)AxisWeb應(yīng)用,以RPC方式回應(yīng)請(qǐng)求。不管是客戶(hù)端還是效勞器端都是通過(guò)Axis進(jìn)行通信的。WebService請(qǐng)求者AxisAPIAxisWeb應(yīng)用WebServiceRPC請(qǐng)求RPC響應(yīng)8

Axis體系結(jié)構(gòu)

9

〔1〕下載安裝包: 1〕Axis安裝包 2〕XML分析器軟件包 3〕JavaMailAPI 4〕JavaBeansActivationFramework軟件包Tomcat中安裝Axis10

〔2〕在Tomcat中部署Asxis 解壓下載的Axis軟件包,把webapps文件夾下 的axis文件夾復(fù)制到Tomcat的webapps文件夾 下,完成Axis部署?!?〕設(shè)置系統(tǒng)classpath環(huán)境變量: axis文件夾下有8個(gè)jar包,全部添加到系統(tǒng) classpath環(huán)境變量中。11

〔4〕在axis中藥添加的jar包: 將Xerces的軟件包xercesImpl.jar、 xercesSamples.jar、xmlapis.jar和 xmlAPIs.jar拷貝到 axis/WEBINF/lib文件 夾下。 通過(guò)這些包,Axis可以解析XML。 假設(shè)要使用JWS,還要添加tools.jar。 JWS是Axis中的JavaWebService工具,可 以自動(dòng)尋找和編譯axis下webapps目錄中的 Java文件,并部署它。1213

〔5〕在JDK中參加的jar包: 將JavaMaiAPI中的mail.jar和JavaBeans ActivationFramework軟件包中的activation.jar 復(fù)制到JAVA_HOME/jre/ext文件夾中。Tomcat 在啟動(dòng)時(shí)會(huì)加載這兩個(gè)jar包。Mail.jara實(shí)現(xiàn) JavaMailAPI,在處理帶附件的Soap消息時(shí)發(fā)揮 作用,activation.jar包實(shí)現(xiàn)激活JavaBeans的功 能,在處理數(shù)據(jù)對(duì)象時(shí)發(fā)揮作用。 測(cè)試:如在瀏覽器中鍵入地址: ://localhoast:8080/axis/ 出現(xiàn)下面的頁(yè)面即告Axis配置成功。14

15

14.5AxiswebService程序例:

HelloWorldWebServicesayHelloWorld(Stringname)twoAdd(intx,inty)Client16

編寫(xiě)

WebService:

HelloWolrd.JavapublicclassHelloWorld{ publicStringsayHelloWorld(Stringname) { returnname+”Hello,world!”; } punlicinttwoAdd(intx,inty) { return(x+y); }}17部署WebService:

HelloWolrd.Java更名為HelloWorld.jws,并復(fù)制到

Tomcat../webapps/axis文件夾下。

在瀏覽器中鍵入地址::8080/axis/HelloWorld.jws1819

點(diǎn)擊ClicktoseetheWSDL〔WebServicesDescriptionLanguage〕20

WSDL文件21容器自動(dòng)編譯:在jwsClasses路徑下。22

〔2〕編寫(xiě)客戶(hù)端代碼:?jiǎn)?dòng)myEclipse,建立一個(gè)Java工程,引入Java包:axis.jar、、、jaxrpc.jar.建立一個(gè)類(lèi)TestClient.java23import;import;publicclassTestClient{ publicvoiddoTest(Stringname)throwsException { //效勞所在位置 Stringurl="://localhost:8080/axis/HelloWorld.jws"; Serviceservice=newService();//創(chuàng)立一個(gè)Service實(shí)例 Callcall=(Call)service.createCall();//創(chuàng)立Call實(shí)例 //為Call設(shè)置效勞的位置 call.setTargetEndpointAddress(new.URL(url)); //設(shè)置提供效勞的方法 call.setOperationName("sayHelloWorld"); //調(diào)用效勞并獲得結(jié)果,這里返回String Stringres=(String)call.invoke(newObject[]{name}); System.out.println(res); }

24publicvoiddoAdd(intx,inty)throwsException{ Stringurl= "://localhost:8080/axis/HelloWorld.jws"; Serviceservice=newService(); Callcall=(Call)service.createCall(); call.setTargetEndpointAddress(new .URL(url)); call.setOperationName("twoAdd");intres=(Integer)call.invoke(newInteger[]{x,y}); System.out.println(res); }

25

public

static

voidmain(String[]args)throws Exception { TestClienttest=newTestClient(); test.doTest("鄒立杰\t"); test.doAdd(100,200); }}

26

基于SOAP協(xié)議WEBService應(yīng)用的訂單查詢(xún)

〔1〕系統(tǒng)架構(gòu)Ind

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論