android現(xiàn)場(chǎng)授課視頻-之基礎(chǔ)石老師代碼2axis,xfire_第1頁(yè)
android現(xiàn)場(chǎng)授課視頻-之基礎(chǔ)石老師代碼2axis,xfire_第2頁(yè)
android現(xiàn)場(chǎng)授課視頻-之基礎(chǔ)石老師代碼2axis,xfire_第3頁(yè)
android現(xiàn)場(chǎng)授課視頻-之基礎(chǔ)石老師代碼2axis,xfire_第4頁(yè)
android現(xiàn)場(chǎng)授課視頻-之基礎(chǔ)石老師代碼2axis,xfire_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

WebServices技術(shù)架構(gòu)講師:王治國(guó)

WebServices開發(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ù)端開發(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ù)器端開發(fā)

即時(shí)發(fā)布使用即時(shí)發(fā)布首先需要一個(gè)實(shí)現(xiàn)服務(wù)功能的Java源文件,將其擴(kuò)展名改為.jws(JavaWebService的縮寫),然后將該文件放到Tomcat下面的webapps\axis目錄下即可。但是JWS的web服務(wù)發(fā)布是一個(gè)很簡(jiǎn)單的Web服務(wù)發(fā)布方式,在頁(yè)面中你不能使用包,而且由于代碼是在運(yùn)行期被編譯的,所以在部署之后,你也很難找到錯(cuò)誤所在。

定制發(fā)布

編寫要發(fā)布為服務(wù)的java類編譯生成的class文件應(yīng)該放在Tomcat下的webapps\axis\WEB-INF\classes\下面編寫deploy.wsdd文件描述服務(wù)的名稱,入口等信息切換到命令行下,執(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ù)器端開發(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的操作名稱,目標(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());}通過輸入wsdl地址,命名空間地址和服務(wù)名,用服務(wù)工廠創(chuàng)建出一個(gè)服務(wù)實(shí)例,再通過設(shè)置端口名得到一個(gè)服務(wù)類型的服務(wù)代理對(duì)象,通過該代理,就可以直接訪問web服務(wù)了。

靜態(tài)方式按常規(guī)方式發(fā)布一個(gè)webservice得到wsdl文件通過web頁(yè)面直接另存為通過Java2WSDL工具類生成(javaorg.apache.axis.wsdl.Java2WSDL-odemo1.wsdl-l-nhttp:///test.Demo)利用WSDL2Java工具類生成客戶端調(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ù)器端參考開發(fā)指南手動(dòng)完成使用IDE直接生成客戶端(類似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ì)象,來利用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-開始使用webservicetry{firstPortTypetest=(firstPortType)factory.create(service,sayHelloURL);Stringstr=test.getVersion();System.out.println(str);}catch(Exceptione){e.printStackTrace();}}

使用WsGen類生成,具體方法查看用戶指南。我們直接使用就可以public

static

voidmain(String[]

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論