




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
WebServices技術(shù)架構(gòu)講師:王治國(guó)
WebServices開(kāi)發(fā)系列講座
WebServices技術(shù)架構(gòu)JDK1.6直接支持WebServices使用axis實(shí)現(xiàn)webservice使用xfire實(shí)現(xiàn)webservicecxfWebServices案例(銀聯(lián)ATM存取系統(tǒng))
JavaCodeCallJavaobjxmlXmlJava<?xml…CallReturn=xxx…<?xml…CallArg1arg2…C++xmlXmlc++C++CallJDK6增加了對(duì)WS的支持importjavax.xml.ws.*;importjavax.jws.*;importjavax.jws.soap.*;@WebService(targetNamespace="")@SOAPBinding(style=SOAPBinding.Style.RPC)publicclassHelloService{ publicstaticvoidmain(String[]args) { Endpoint.publish("",newHelloService()); }
@WebMethod publicvoidsayHello() { System.out.println("hello"); }}?wsdl
wsimport-dc:\wsclient-sc:\wsclientpublicstaticvoidmain(String[]args){HelloServiceServicehss=newHelloServiceService();HelloServicehs=hss.getHelloServicePort();System.out.println(hs.getClass().getName());hs.sayHello();}
日程
Axis的安裝配置服務(wù)端開(kāi)發(fā)即時(shí)發(fā)布定制發(fā)布WebServices的優(yōu)點(diǎn)WebServices技術(shù)SOAPWSDLUDDISOA(面向服務(wù)的架構(gòu))
Axis安裝配置
安裝JDK安裝并配置Tomcat從官方網(wǎng)站下載最新的Axis項(xiàng)目打包文件,并將webapps下axis目錄拷貝到Tomcat的webapps目錄下驗(yàn)證Axis的安裝瀏覽所發(fā)布的服務(wù)
服務(wù)器端開(kāi)發(fā)
即時(shí)發(fā)布使用即時(shí)發(fā)布首先需要一個(gè)實(shí)現(xiàn)服務(wù)功能的Java源文件,將其擴(kuò)展名改為.jws(JavaWebService的縮寫(xiě)),然后將該文件放到Tomcat下面的webapps\axis目錄下即可。但是JWS的web服務(wù)發(fā)布是一個(gè)很簡(jiǎn)單的Web服務(wù)發(fā)布方式,在頁(yè)面中你不能使用包,而且由于代碼是在運(yùn)行期被編譯的,所以在部署之后,你也很難找到錯(cuò)誤所在。
定制發(fā)布
編寫(xiě)要發(fā)布為服務(wù)的java類(lèi)編譯生成的class文件應(yīng)該放在Tomcat下的webapps\axis\WEB-INF\classes\下面編寫(xiě)deploy.wsdd文件描述服務(wù)的名稱(chēng),入口等信息切換到命令行下,執(zhí)行
javaorg.apache.axis.client.AdminClient–p8085deploy.wsdd卸載服務(wù)找到undeploy.wsdd文件,修改其中的參數(shù)值運(yùn)行javaorg.apache.axis.client.AdminClientundeploy.wsdd注意:deploy.wsdd,undeploy.wsdd,批處理文件,可放任意目錄
服務(wù)器端開(kāi)發(fā)WSDD的高級(jí)特性
Webservices的作用域范圍我們可以在wsdd文件中加入如下
<servicename="MyService"...><parametername="scope"value="value"/>...</service>Value的值可以為request,sesssion,applicationRequest:為每個(gè)請(qǐng)求創(chuàng)建一個(gè)服務(wù)對(duì)象Session:為每個(gè)調(diào)用這個(gè)WebServices的客戶端創(chuàng)建一個(gè)服務(wù)對(duì)象。Application:服務(wù)端創(chuàng)建一個(gè)服務(wù)對(duì)象,為所有的webserivces客戶端使用,不能存儲(chǔ)客戶端的一些個(gè)性化數(shù)據(jù)。調(diào)用web服務(wù)DLL動(dòng)態(tài)接口調(diào)用方式(DynamicInvocationInterface)動(dòng)態(tài)代理方式(DynamicProxy)靜態(tài)方式(Stubs)
DLL方式publicstaticvoidmain(String[]args){try{Stringendpoint="";//實(shí)例化一個(gè)服務(wù)對(duì)象serviceServiceservice=newService();
//創(chuàng)建一個(gè)空的調(diào)用對(duì)象Call,設(shè)置Call的操作名稱(chēng),目標(biāo)地址,傳入?yún)?shù)等等//執(zhí)行調(diào)用后即可得到返回的結(jié)果Callcall=(Call)service.createCall();call.setTargetEndpointAddress(new.URL(endpoint));call.setOperationName(newQName("","add3"));//CalltoaddParameter/setReturnTypeasdescribedinuser-guide.html//call.addParameter("testParam",//org.apache.axis.Constants.XSD_STRING,//javax.xml.rpc.ParameterMode.IN);//call.setReturnType(org.apache.axis.Constants.XSD_STRING);Integerret=(Integer)call.invoke(newObject[]{1,3});System.out.println(ret);}catch(Exceptione){System.err.println(e.toString());}}
動(dòng)態(tài)代理方式動(dòng)態(tài)代理需要一個(gè)本地的接口作為代理publicinterfaceITestDynameicProxyextendsRemote{publicStringgetMessage()throwsRemoteException;}publicstaticvoidmain(String[]args)throwsException{StringwsdlUrl="";StringnameSpaceUri="";StringserviceName="Test1Service";StringportName="Test1";ServiceFactoryserviceFactory=ServiceFactory.newInstance();Serviceservice=serviceFactory.createService(newURL(wsdlUrl),newQName(nameSpaceUri,serviceName));ITestDynameicProxyproxy=(ITestDynameicProxy)service.getPort(newQName(nameSpaceUri,portName),ITestDynameicProxy.class);System.out.println(proxy.getMessage());}通過(guò)輸入wsdl地址,命名空間地址和服務(wù)名,用服務(wù)工廠創(chuàng)建出一個(gè)服務(wù)實(shí)例,再通過(guò)設(shè)置端口名得到一個(gè)服務(wù)類(lèi)型的服務(wù)代理對(duì)象,通過(guò)該代理,就可以直接訪問(wèn)web服務(wù)了。
靜態(tài)方式按常規(guī)方式發(fā)布一個(gè)webservice得到wsdl文件通過(guò)web頁(yè)面直接另存為通過(guò)Java2WSDL工具類(lèi)生成(javaorg.apache.axis.wsdl.Java2WSDL-odemo1.wsdl-l-nhttp:///test.Demo)利用WSDL2Java工具類(lèi)生成客戶端調(diào)用代碼(javaorg.apache.axis.wsdl.WSDL2Javademo.wsdl-pclient)在生成的代碼基礎(chǔ)上,進(jìn)行客戶端的調(diào)用 publicstaticvoidmain(String[]args)throwsServiceException,RemoteException{ DemoServiceLocatordemoService=newDemoServiceLocator(); Demodemo=demoService.getdemo(); System.out.println(demo.getMessage()); }
XFire服務(wù)器端參考開(kāi)發(fā)指南手動(dòng)完成使用IDE直接生成客戶端(類(lèi)似Axis,有三種客戶端調(diào)用的方式)
DDL方式publicstaticvoidmain(String[]args)throwsMalformedURLException,Exception{Clientclient=newClient(newURL(""));Object[]results=client.invoke("example",newObject[]{"張孝祥"});System.out.println((String)results[0]);}
動(dòng)態(tài)代理方式publicstaticvoidmain(String[]args){//1-制造一個(gè)service對(duì)象,來(lái)利用webservice所提供的服務(wù)Serviceservice=newObjectServiceFactory().create(firstPortType.class);//2-制作一個(gè)XFire的代理工廠,有了代理之后,調(diào)用webservice的方法就好像是在本地進(jìn)行調(diào)用了XFireProxyFactoryfactory=newXFireProxyFactory(XFireFactory.newInstance().getXFire());//3-獲取webservice提供服務(wù)的網(wǎng)址StringsayHelloURL="";//4-開(kāi)始使用webservicetry{firstPortTypetest=(firstPortType)factory.create(service,sayHelloURL);Stringstr=test.getVersion();System.out.println(str);}catch(Exceptione){e.printStackTrace();}}
使用WsGen類(lèi)生成,具體方法查看用戶指南。我們直接使用就可以public
static
voidmain(String[]
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦公場(chǎng)景下AI助力快速解讀醫(yī)療數(shù)據(jù)
- 醫(yī)療數(shù)據(jù)庫(kù)與資源利用指南
- 醫(yī)療大數(shù)據(jù)的采集與處理揭秘健康之秘
- 醫(yī)療廢棄物處理與生態(tài)保護(hù)的關(guān)系研究
- Axure RP 互聯(lián)網(wǎng)產(chǎn)品原型設(shè)計(jì)課件 第9章 使用中繼器
- 醫(yī)療設(shè)備質(zhì)量管理的關(guān)鍵環(huán)節(jié)
- 集體備課中心發(fā)言稿模版
- 醫(yī)療信息化趨勢(shì)下的電子病歷系統(tǒng)革新
- 中小學(xué)做義工思想總結(jié),個(gè)人總結(jié)模版
- 醫(yī)療大數(shù)據(jù)挖掘在醫(yī)療決策支持系統(tǒng)中的實(shí)踐
- 威圖電柜空調(diào)SK3304500使用說(shuō)書(shū)
- 2024年山東省濟(jì)南市歷下區(qū)中考二模地理試題
- 電子書(shū) -《商業(yè)的底層邏輯》
- 人居環(huán)境科學(xué)市公開(kāi)課一等獎(jiǎng)省賽課微課金獎(jiǎng)?wù)n件
- 4.2 應(yīng)對(duì)挫折提升抗逆力(高效教案)-【中職專(zhuān)用】中職思想政治《心理健康與職業(yè)生涯》(高教版2023·基礎(chǔ)模塊)
- 外貿(mào)談判知識(shí)分享課件
- 教學(xué)課件-思想政治教育心理學(xué)-楊芷英
- 網(wǎng)絡(luò)互連設(shè)備-交換機(jī)VLAN配置
- 國(guó)際企業(yè)的財(cái)務(wù)管理完整版
- 2024年愛(ài)數(shù)技術(shù)認(rèn)證工程師考試題目
- 北師大版 2024-2025學(xué)年四年級(jí)數(shù)學(xué)上冊(cè)典型例題系列第六單元:商的變化規(guī)律和商不變的性質(zhì)專(zhuān)項(xiàng)練習(xí)(原卷版+解析)
評(píng)論
0/150
提交評(píng)論