<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-30  評論-123  文章-0  trackbacks-0
    摘要:在《XFire:開發(fā)Web服務(wù)的簡易之道(二)》中最后提到過:要想檢驗Web服務(wù)是否有效,需要一個客戶端程序?qū)嶋H調(diào)用一下這個Web服務(wù)。本章我們就來創(chuàng)建這樣一個用于檢驗的客戶端程序,驗證一下我們前面的工作是不是真的有效。最后總結(jié)一下用XFire開發(fā)Web服務(wù)的步驟。

    創(chuàng)建客戶端程序
    我們可以使用很多方法,任何SOAP工具來創(chuàng)建客戶端程序,例如.Net或Apache Axis。我的這個例子中我是用一個名叫WsClient.java的Servlet中的動態(tài)代理。為了減少編碼的代價,我將所有屏幕構(gòu)建元素都放到doGet()方法中。對Web服務(wù)服務(wù)的實際調(diào)用在callWebService()方法中。代碼很簡單:
    /*?Call?the?Web?service
    ????*
    ????
    */

    ????
    public?String?callWebService(
    ????????String?fromAccount,?String?toAccount,?
    double?amount,?String?currency)?
    ????????
    throws?MalformedURLException,?Exception?{
    ????????
    ????????
    //Create?a?metadata?of?the?service??????
    ????????Service?serviceModel?=?new?ObjectServiceFactory().create(IBankingService.class);????????
    ????????log.debug(
    "callSoapServiceLocal():?got?service?model."?);
    ???
    ????????
    //Create?a?proxy?for?the?deployed?service
    ????????XFire?xfire?=?XFireFactory.newInstance().getXFire();
    ????????XFireProxyFactory?factory?
    =?new?XFireProxyFactory(xfire);??????
    ????
    ????????String?serviceUrl?
    =?"http://localhost:8080/websvc/services/Banking";
    ????????
    ????????IBankingService?client?
    =?null;
    ????????
    try?{
    ????????????client?
    =?(IBankingService)?factory.create(serviceModel,?serviceUrl);
    ????????}
    ?catch?(MalformedURLException?e)?{
    ????????????log.error(
    "WsClient.callWebService():?EXCEPTION:?"?+?e.toString());
    ????????}
    ????
    ???????????????
    ????????
    //Invoke?the?service
    ????????String?serviceResponse?=?"";
    ????????
    try?{?
    ????????????serviceResponse?
    =?client.transferFunds(fromAccount,?toAccount,?amount,?currency);
    ???????}
    ?catch?(Exception?e){
    ????????????log.error(
    "WsClient.callWebService():?EXCEPTION:?"?+?e.toString());?????????????????
    ????????????serviceResponse?
    =?e.toString();
    ????????}
    ????????
    ????????log.debug(
    "WsClient.callWebService():?status="?+?serviceResponse);??????????????

    ????????
    //Return?the?response
    ????????return?serviceResponse;
    ????}
    ???

    這段代碼做了些什么?讓我解釋一下:首先我們創(chuàng)建了一個服務(wù)模型,里面包含了對服務(wù)的描述,換句話說,我們創(chuàng)建了服務(wù)的元數(shù)據(jù)。我們是用XFire的ObjectServiceFactory通過接口IBankingService.class創(chuàng)建了這個服務(wù)模型。

    下一步就是獲取XFire的代理對象。這一步中沒有任何應(yīng)用細節(jié)。通過proxyFactory,使用服務(wù)模型和服務(wù)終點URL(用于獲得WSDL),我們獲得了服務(wù)的本地代理。

    這個代理就是實際的客戶端。現(xiàn)在我們可以調(diào)用transferFunds()方法獲得我們想要的Web服務(wù)了。

    一旦這個例子部署成功并啟動,就可以用下面的Servlet URL檢驗:
    http://localhost:8080/websvc/ws
    Servlet使用默認的參數(shù)訪問Web服務(wù)并顯示接收到的響應(yīng)。你應(yīng)該能看到下面兩行信息
    Response Received
    COMPLETED: CDN$ 500.00 was successfully transferred from A/C# 11111-01234 to A/C# 99999-05678
    現(xiàn)在你可以確信Web服務(wù)真的起來了并且工作正常。

    你可以嘗試傳入不同的數(shù)據(jù)。你可以輸入類似于下面的URL
    http://localhost:8080/websvc/ws?from=11-2345&to=77-9876&amt=250.00&cur=EUR.

    Web服務(wù)開發(fā)的基本步驟
    下面列出了使用XFire開發(fā)Web服務(wù)的基本步驟:
    1、檢驗Java類的方法和構(gòu)造函數(shù)時公共的;
    2、將XFire Servlet相關(guān)的入口添加到web.xml中;
    3、創(chuàng)建services.xml并把它放到WEB-INF/classes/META-INF/xfire目錄下;
    4、將Xfire和其他第三方庫添加到你的Web應(yīng)用的WEB-INF/lib 目錄下。
    OK,這就是全部要做,就是這么簡單。
    posted on 2006-05-16 09:43 學二的貓 閱讀(5533) 評論(6)  編輯  收藏 所屬分類: Java禪機

    評論:
    # re: XFire:開發(fā)Web服務(wù)的簡易之道(三)--開發(fā)客戶端程序 2006-05-16 10:54 | Harryson
    我在TOMCAT下發(fā)現(xiàn)如下的信息:264344311 [http-8088-Processor22] ERROR example.WsClient - WsClient.callWebServ
    ice(): EXCEPTION: org.codehaus.xfire.XFireRuntimeException: Could not invoke ser
    vice.. Nested exception is org.codehaus.xfire.fault.XFireFault: Couldn't send me
    ssage.似乎有點問題,請指點!  回復(fù)  更多評論
      
    # re: XFire:開發(fā)Web服務(wù)的簡易之道(三)--開發(fā)客戶端程序 2006-06-03 16:18 | Apollo
    不錯,夠簡單,獲益匪淺
    不過,能不能講一下用xfire自動生成客戶端程序。我弄了一上午也沒出來.
    希望可以與你交流下哈
    msn:Apollo_zhc@hotmail.com  回復(fù)  更多評論
      
    # re: XFire:開發(fā)Web服務(wù)的簡易之道(三)--開發(fā)客戶端程序[未登錄] 2008-08-12 13:59 | alex
    太膚淺  回復(fù)  更多評論
      
    # re: XFire:開發(fā)Web服務(wù)的簡易之道(三)--開發(fā)客戶端程序 2009-05-02 21:50 | sc
    寫得好,是我需要的。  回復(fù)  更多評論
      
    # re: XFire:開發(fā)Web服務(wù)的簡易之道(三)--開發(fā)客戶端程序 2011-11-02 02:06 | lisongandy
    Service serviceModel = new ObjectServiceFactory().create(IBankingService.class);

    在實際中,開發(fā)者是不可能知道元數(shù)據(jù)接口IBankingService.class的,那么該如何創(chuàng)建元數(shù)據(jù)呢?  回復(fù)  更多評論
      
    # re: XFire:開發(fā)Web服務(wù)的簡易之道(三)--開發(fā)客戶端程序 2011-11-02 02:07 | lisongandy
    特指客戶端開發(fā)者  回復(fù)  更多評論
      
    主站蜘蛛池模板: 中文日本免费高清| 91精品免费高清在线| 亚洲人成伊人成综合网久久久 | 人人鲁免费播放视频人人香蕉| 亚洲无线一二三四区手机| 亚洲午夜免费视频| 国产尤物在线视精品在亚洲| 精品亚洲综合久久中文字幕| 成年午夜视频免费观看视频| 日本一区午夜艳熟免费| 亚洲人成网站色在线观看| 国产成人亚洲精品91专区手机| 亚洲精品视频免费看| 一级毛片在线播放免费| 亚洲免费闲人蜜桃| 亚洲伊人久久大香线蕉综合图片| 国产在线国偷精品产拍免费| 久久国产精品免费一区| 亚洲欧美国产国产综合一区| 亚洲成人在线网站| 亚洲综合色区在线观看| 一本无码人妻在中文字幕免费 | 免费在线观看亚洲| 日本免费一区二区在线观看| 成人免费av一区二区三区| 亚洲愉拍一区二区三区| 久久亚洲中文字幕精品有坂深雪| 亚洲精品A在线观看| 成人性生交视频免费观看| 99久热只有精品视频免费看 | 一级毛片无遮挡免费全部| 国产成人精品日本亚洲18图| 亚洲国产a∨无码中文777| 亚洲高清免费视频| 午夜爱爱免费视频| 久久久久久久免费视频| 一级毛片免费毛片一级毛片免费 | 久久久久久亚洲AV无码专区| 中文字幕专区在线亚洲| 免费v片在线观看品善网| 精品国产免费观看|