欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
使用WSIF調用Web服務(wù)
級別: 初級
肖菁 (jing.xiao@chinacreator.com), 軟件工程師, 湖南省長(cháng)沙鐵道學(xué)院科創(chuàng )計算機系統集成有限公司軟件中心
2004 年 1 月 01 日
WSIF中允許客戶(hù)端實(shí)現者不使用傳統的RPC方法調用web服務(wù),而是使用基于WSDL文件的調用方法來(lái)調用Web服務(wù),這樣服務(wù)器端實(shí)現方法的更改不會(huì )影響到客戶(hù)端代碼的修改,而是將所有的修改現在在被使用的WSDL文件中,很大程度簡(jiǎn)化了程序員的工作。詳細的介紹請大家參考作者的另一篇文章《WSIF簡(jiǎn)介》。本文中作者將重點(diǎn)描述如何使用WSIF提供的WSDL擴展將來(lái)調用已經(jīng)被發(fā)布的Web服務(wù)。
在開(kāi)始我們的調用工作之前,我們需要準備好一個(gè)已經(jīng)被發(fā)布的Web服務(wù),考慮到簡(jiǎn)單性,我們選擇自己創(chuàng )建一個(gè)簡(jiǎn)單的Web服務(wù)并且發(fā)布到WSAD5的測試服務(wù)器上。
首先我們需要創(chuàng )建一個(gè)Web服務(wù),我們的演示實(shí)例是從一個(gè)java類(lèi)創(chuàng )建的Web服務(wù),這個(gè)服務(wù)的業(yè)務(wù)邏輯很簡(jiǎn)單,就是根據傳入的參數返回"Say Hello To :%參數%" ;該Java類(lèi)的源代碼如下:
package mows; public class HelloWorld { public String getString(String param){ return "say hello to : " + param; } }
至于如何從該java類(lèi)生成Web服務(wù),請大家參考IBM developerWorks上的其它相關(guān)文章,作者這里不在多作解釋。
web服務(wù)創(chuàng )建成功以后,我們可以將他發(fā)布到WSAD5的測試服務(wù)器上,然后使用WSAD5自動(dòng)創(chuàng )建的客戶(hù)端訪(fǎng)問(wèn)該web服務(wù),確保該Web服務(wù)已經(jīng)正常發(fā)布和可以正常工作。
好了,現在給大家演示一個(gè)例子,看看如何在應用中使用WSIF的統一調用方法進(jìn)行調用這個(gè)Web服務(wù)。
在WSAD5中,發(fā)布該服務(wù)的時(shí)侯會(huì )自動(dòng)生成四個(gè)WSDL文檔:HelloWorld.wsdl,HelloWorldBinding.wsdl,HelloWorldService.wsdl,HelloWorldJava.wsdl。其中我們需要用到的是前面三個(gè)文件,下面是生成我們需要的WSDL文檔的詳細過(guò)程:
將HelloWorld.wsdl復制另存為SoapWsdl.wsdl 將HelloWorldBinding.wsdl的binding子元素拷貝到SoapWsdl.wsdl文件中成為definitions元素的子元素 將HelloWorldService.wsdl文件中的service子元素拷貝到SoapWsdl.wsdl文件中成為definitions元素的子元素 在SoapWsdl.wsdl增加HelloWorldBinding.wsdl中關(guān)于SOAP命名空間的定義 在SoapWsdl.wsdl增加HelloWorldBinding.wsdl中關(guān)于interface命名空間的定義 將SoapWsdl.wsdl中port的binding屬性由binding:HelloWorldBinding改為interface:HelloWorldBinding
好了,現在我們就可以通過(guò)這個(gè)SoapWsdl文件來(lái)訪(fǎng)問(wèn)這個(gè)Web服務(wù)了。
[注] 使用其它工具發(fā)布Web服務(wù)和自動(dòng)生成的WSDL文檔的方式和WSAD5不完全相同,所以我們編寫(xiě)調用Web服務(wù)的WSDL文檔的方法也不一樣,但是大家可以參考這個(gè)過(guò)程。
好了,現在我們已經(jīng)編寫(xiě)好了調用該Web服務(wù)的WSDL文檔了,接下來(lái)的工作將是演示如何使用WSIF提供的API通過(guò)使用我們編寫(xiě)的WSDL文檔來(lái)調用這個(gè)服務(wù)。
下面這段代碼是作者使用的調用該服務(wù)的Run.java, 供大家參考。它需要我們的WSDL文件名作為參數,處理結果是將服務(wù)調用的返回結果打印在控制臺上。
//Run.java package dynamic; import javax.xml.namespace.QName; import org.apache.wsif.WSIFMessage; import org.apache.wsif.WSIFOperation; import org.apache.wsif.WSIFPort; import org.apache.wsif.WSIFService; import org.apache.wsif.WSIFServiceFactory; public class Run { public static void main(String[] args) throws Exception { // 第一個(gè)參數是 WSDL文件的位置和名字 // 創(chuàng )建服務(wù)工廠(chǎng)(service factory) WSIFServiceFactory factory = WSIFServiceFactory.newInstance(); WSIFService service = factory.getService( args[0], null, null, "http://mows.wsdl/HelloWorld/", "HelloWorld"); // 參數http://mows.wsdl/HelloWorld/對應于我們WSDL文檔中的targetNamespace //參數HelloWorld對應于WSDL文檔中的porttype // 參數類(lèi)型映射 service.mapType( new QName("http://wsifservice.helloworld", "param"), Class.forName( "java.lang.String")); // 獲得port WSIFPort port = service.getPort(); // 創(chuàng )建操作(operation) WSIFOperation operation = port.createOperation("getHelloString"); // 創(chuàng )建和該操作調用相關(guān)的輸入/輸出/錯誤信息 WSIFMessage input = operation.createInputMessage(); WSIFMessage output = operation.createOutputMessage(); WSIFMessage fault = operation.createFaultMessage(); // 組裝輸入信息 input.setObjectPart("param", "xiaojing"); // 執行調用 if (operation.executeRequestResponseOperation(input, output, fault)) { // 調用成功,從返回信息中獲取我們需要的信息 // message String zipInfo = (String) output.getObjectPart("result"); // result就是我們的WSDL文檔中的output對應的消息(message元素)中的參數(part元素)的名字 System.out.println(zipInfo); } else { System.out.println("Invocation failed"); // 調用失敗,處理錯誤信息 } } }
如果大家看過(guò)作者的另外兩篇文章《使用WSIF調用本地java類(lèi)》和《使用WSIF調用EJB》,你就會(huì )發(fā)現他們使用的調用代碼實(shí)際上是一模一樣的,除了輸入的WSDL文件名不同和一些服務(wù)相關(guān)的參數外。這也是WSIF的重要特性:
通過(guò)WSDL文件調用服務(wù),不管他是如何實(shí)現和被訪(fǎng)問(wèn)的。 盡可能的將修改限制在WSDL文件中而不需要修改應用代碼
2.3.1 設置環(huán)境變量
由于編譯和運行這個(gè)程序需要將大量的.jar文件設置到classpath中,所以請各位參考下載的WSIF包中的classpath.bat和lcp.bat編寫(xiě)自己的腳本來(lái)實(shí)現環(huán)境變量的設置。后面的下載的包里面有作者編寫(xiě)的環(huán)境變量設置腳本,供大家參考。
2.3.2 運行
設置好環(huán)境變量后,編譯程序,然后就可以使用下面的命令來(lái)執行這個(gè)程序了:
java dynamic.Run EJBWsdl.wsdl
它執行后的顯示結果如下圖:
如果各位有心的話(huà),應該可以發(fā)現,其實(shí)我們編寫(xiě)的Run.java中的有些參數仍然來(lái)自于我們的WSDL文檔、和客戶(hù)應用基本沒(méi)有關(guān)聯(lián)(比如:factory.getService方法調用的第四個(gè)參數和第五個(gè)參數,他們來(lái)源于WSDL中的一些元素,而且和客戶(hù)應用基本沒(méi)有關(guān)聯(lián)),所以如果你可以做的話(huà),你可以自己編寫(xiě)一個(gè)基于SAX的XML文檔解析類(lèi),將這些和WSDL關(guān)聯(lián)而和應用代碼不很密切的內容從WSDL中直接取值,而不是依賴(lài)于編程者的輸入。
如果被輸入的參數或者返回的參數不是java的原始類(lèi)型,那么我們的類(lèi)型映射就沒(méi)有這么簡(jiǎn)單了。大家可以參考WSIF中提供的localjava的例子,它的返回類(lèi)型都用到了 一個(gè)address的類(lèi)型,它是該實(shí)例中用到的一個(gè)自定義的類(lèi)型,對應于一個(gè)java類(lèi),WSDL文檔的編寫(xiě)也和一般的不同,請參考WSIF中提供的AddressBook.wsdl實(shí)例。不過(guò)一點(diǎn)可以給大家提示的是,編寫(xiě)好了wsdl文檔后,其中復雜類(lèi)型對應的java類(lèi)不需要自己編寫(xiě),可以使用Axis提供的wsdl2java功能來(lái)生成,命令的使用類(lèi)似于:java org.apache.axis.wsdl.WSDL2Java (WSDL-file-URL),詳細的幫助請大家參考Axis項目的用戶(hù)指導(User Guide)
WSIF允許使用者通過(guò)WSDL文件直接調用web服務(wù),而不是使用傳統的RPC調用方法,這樣做的好處就是當服務(wù)器端實(shí)現代碼和實(shí)現方式發(fā)生改變時(shí),盡可能的減少對客戶(hù)端代碼的影響,而將這種影響限制在對WSDL文檔的修改工作中。
本文中作者詳細的介紹如何使用WSIF調用Web服務(wù)的過(guò)程,給出了編寫(xiě)WSDL文檔的實(shí)例和簡(jiǎn)單的說(shuō)明,同時(shí)給出了如何通過(guò)WSIF提供的統一的調用方式通過(guò)WSDL文檔調用Web服務(wù)的例子。通過(guò)實(shí)例大家可以看到我們實(shí)現了服務(wù)調用和服務(wù)實(shí)現的分離,任何服務(wù)實(shí)現和相關(guān)的映射基本上只會(huì )影響到服務(wù)的實(shí)現和WSDL的修改,不會(huì )影響到服務(wù)調用段代碼的修改。
1. apache的WSIF項目http://ws.apache.org/wsif/
2. apache的Axis項目http://ws.apache.org/axis/
工具下載地址:
1. WSIF 2.0 下載地址http://www.apache.org/dyn/closer.cgi/ws/wsif/
文中用到的類(lèi)和WSDL文檔、環(huán)境變量設置等請下載:WSIF-ejbbinding.rar
文中演示用到的Web服務(wù)的工程請大家下載:DefaultEAR.ear
 
肖菁,聯(lián)系方式:jing.xiao@chinacreator.com,目前是湖南省長(cháng)沙鐵道學(xué)院科創(chuàng )計算機系統集成有限公司軟件中心軟件工程師,IBM developerworks/BEA dev2dev撰稿人,主要研究J2EE編程技術(shù)、Web Service技術(shù)以及他們在websphere、weblogic、apache平臺上的實(shí)現,擁有IBM 的 Developing With Websphere Studio證書(shū)。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Java遠程通信技術(shù)——Axis實(shí)戰
使用SOAP開(kāi)發(fā)java web服務(wù)--Axis開(kāi)發(fā)方案
AXIS開(kāi)始Web 服務(wù)
用tomcat和axis開(kāi)發(fā)web服務(wù)
用于異步Web服務(wù)的方法
AXIS實(shí)現Web服務(wù)深入篇
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久