




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
WebServices技術架構講師:王治國
WebServices開發系列講座
WebServices技術架構JDK1.6直接支持WebServices使用axis實現webservice使用xfire實現webservicecxfWebServices案例(銀聯ATM存取系統)
JavaCodeCallJavaobjxmlXmlJava<?xml…CallReturn=xxx…<?xml…CallArg1arg2…C++xmlXmlc++C++CallJDK6增加了對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的安裝配置服務端開發即時發布定制發布WebServices的優點WebServices技術SOAPWSDLUDDISOA(面向服務的架構)
Axis安裝配置
安裝JDK安裝并配置Tomcat從官方網站下載最新的Axis項目打包文件,并將webapps下axis目錄拷貝到Tomcat的webapps目錄下驗證Axis的安裝瀏覽所發布的服務
服務器端開發
即時發布使用即時發布首先需要一個實現服務功能的Java源文件,將其擴展名改為.jws(JavaWebService的縮寫),然后將該文件放到Tomcat下面的webapps\axis目錄下即可。但是JWS的web服務發布是一個很簡單的Web服務發布方式,在頁面中你不能使用包,而且由于代碼是在運行期被編譯的,所以在部署之后,你也很難找到錯誤所在。
定制發布
編寫要發布為服務的java類編譯生成的class文件應該放在Tomcat下的webapps\axis\WEB-INF\classes\下面編寫deploy.wsdd文件描述服務的名稱,入口等信息切換到命令行下,執行
javaorg.apache.axis.client.AdminClient–p8085deploy.wsdd卸載服務找到undeploy.wsdd文件,修改其中的參數值運行javaorg.apache.axis.client.AdminClientundeploy.wsdd注意:deploy.wsdd,undeploy.wsdd,批處理文件,可放任意目錄
服務器端開發WSDD的高級特性
Webservices的作用域范圍我們可以在wsdd文件中加入如下
<servicename="MyService"...><parametername="scope"value="value"/>...</service>Value的值可以為request,sesssion,applicationRequest:為每個請求創建一個服務對象Session:為每個調用這個WebServices的客戶端創建一個服務對象。Application:服務端創建一個服務對象,為所有的webserivces客戶端使用,不能存儲客戶端的一些個性化數據。調用web服務DLL動態接口調用方式(DynamicInvocationInterface)動態代理方式(DynamicProxy)靜態方式(Stubs)
DLL方式publicstaticvoidmain(String[]args){try{Stringendpoint="";//實例化一個服務對象serviceServiceservice=newService();
//創建一個空的調用對象Call,設置Call的操作名稱,目標地址,傳入參數等等//執行調用后即可得到返回的結果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());}}
動態代理方式動態代理需要一個本地的接口作為代理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地址,命名空間地址和服務名,用服務工廠創建出一個服務實例,再通過設置端口名得到一個服務類型的服務代理對象,通過該代理,就可以直接訪問web服務了。
靜態方式按常規方式發布一個webservice得到wsdl文件通過web頁面直接另存為通過Java2WSDL工具類生成(javaorg.apache.axis.wsdl.Java2WSDL-odemo1.wsdl-l-nhttp:///test.Demo)利用WSDL2Java工具類生成客戶端調用代碼(javaorg.apache.axis.wsdl.WSDL2Javademo.wsdl-pclient)在生成的代碼基礎上,進行客戶端的調用 publicstaticvoidmain(String[]args)throwsServiceException,RemoteException{ DemoServiceLocatordemoService=newDemoServiceLocator(); Demodemo=demoService.getdemo(); System.out.println(demo.getMessage()); }
XFire服務器端參考開發指南手動完成使用IDE直接生成客戶端(類似Axis,有三種客戶端調用的方式)
DDL方式publicstaticvoidmain(String[]args)throwsMalformedURLException,Exception{Clientclient=newClient(newURL(""));Object[]results=client.invoke("example",newObject[]{"張孝祥"});System.out.println((String)results[0]);}
動態代理方式publicstaticvoidmain(String[]args){//1-制造一個service對象,來利用webservice所提供的服務Serviceservice=newObjectServiceFactory().create(firstPortType.class);//2-制作一個XFire的代理工廠,有了代理之后,調用webservice的方法就好像是在本地進行調用了XFireProxyFactoryfactory=newXFireProxyFactory(XFireFactory.newInstance().getXFire());//3-獲取webservice提供服務的網址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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CSPSTC 25-2019硅基薄膜光伏組件光致衰減測試方法
- T/CSPCI 00001-2022汽油中苯胺類化合物的分離和測定固相萃取/氣相色譜-質譜法
- T/CQAP 3006-2023大興安嶺地產中藥材返魂草質量規范
- T/CNLIC 0080-2023 T/CNFA 018-2023綠色設計產品評價技術規范軟體家具
- T/CNCA 018-2022基于動態地質模型與自主規劃開采的綜采工作面驗收規范
- T/CMA HG021-2020輪胎試驗路面構造深度測量方法手工鋪砂法
- T/CIES 030-2020中小學教室健康照明設計規范
- T/CIE 165-2023企業級固態硬盤測試規范第1部分:功能測試
- T/CI 294-2024重大固定資產投資項目社會穩定風險評估分析篇章和評估報告編寫規范
- 【正版授權】 ISO 834-1:2025 EN Fire-resistance tests - Elements of building construction - Part 1: General requirements
- 《硬科技早期投資-項目評估指南》
- 2025年貴州遵義路橋工程限公司招聘10人高頻重點提升(共500題)附帶答案詳解
- 上海市居住房屋租賃合同范本
- 廣西河池市(2024年-2025年小學六年級語文)部編版小升初模擬(下學期)試卷及答案
- 保潔及會務服務項目技術方案
- 實驗探究題(原卷版)-2024-2025學年初中化學九年級上冊專項復習(湖南專用)
- 成語故事《刻舟求劍》課件2
- 新高考2025屆高考數學二輪復習專題突破精練第9講函數中的整數問題與零點相同問題學生版
- 新版建設工程工程量清單計價標準解讀
- 1、大客戶部組織結構、部門職責
- 低年級繪本閱讀校本課程開發與實施方案
評論
0/150
提交評論