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

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

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

    kingpub

    海內存知己,博客若比鄰

     

    用Axis for Java進行Web Services開發 (2)

    上面的代碼可能和原文檔中不同,并且在名稱空間、函數多態上會給用戶造成糊涂。不過別急,我在翻譯手冊的同時會加入很多解釋的代碼,如果哪位純粹看不懂可以通過郵件獲取幫助:luopc@edu-edu.com.cn ,郵件主題必須是我提供的文檔名稱。
    通過上面的調用代碼,最終生成向服務器請求SOAP信息包,具體XML內容如下:


    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">


    Hello!



    這里我不再多少,細心的朋友請從代碼中找相應的對應信息來進行自己的邏輯理解。至于SOAP協議在我以后的翻譯文檔中會加入進去。
    從上面的代碼中我們在調用的時候輸入了參數new Object[]{“hello!”}。然后從生成的SOAP請求包中可以看到自動序列化成Hello!。你可以看到參數名稱為arg0,類型為xsd:string。其實在Axis客戶端我們可以直接通過具體的方法來設置每一個參數名稱、類型以及返回值類型。如下代碼:
    call.addParameter("testParam",
    org.apache.axis.Constants.XSD_STRING,
    javax.xml.rpc.ParameterMode.IN);
    call.setReturnType(org.apache.axis.Constants.XSD_STRING);
    加入上面的代碼之后生成如下的SOAP信息:


    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">


    Hello!



    可以作簡單的對比。
    也許你會疑惑設置參數名稱和不設置參數名稱有什么區別的疑問。這里作簡單的解釋:
    1. 為什么要call.setReturnType(org.apache.axis.Constants.XSD_STRING)?
    上面你可以調用或者可以不調用,但當返回結果中沒有標明數據類型時Axis就不知道如何進行數據類型轉換。當然如果返回類型你很清楚并且返回應答SOAP的結果中表明了相應的數據類型你便可以不進行上面的函數調用。
    2. 為什么要設置參數名稱和類型?

    好了,下在你知道了如何調用Web Services了,下面告訴你如何寫作和發布Web Services。
    通過Axis發布Web Services
    這里寫作一個簡單的類,然后一步一步進行發布。希望用戶能夠從中理出一些思路來。我在其他的關于Web Services的文章中會專門針對Web Services的通用發布方法。雖然Web Services牽涉到很多復雜的知識,但請大家不要感覺到這些操作簡單,也許你已經有很多疑問,沒關系,記下你的疑問,不斷的投試。
    public class SayHello {

    public String echoString(String hello){
    return hello;
    }
    }
    哈哈,這個類是不是太簡單了。
    一步一步來。
    Axis提供兩種將Java類發布成Web Services的途徑,即即時快速自動發布和通過配置文件進行發布。我們首先從最容易部署的入手。
    JWS----即時部署
    簡單說就是將自己寫的Java類源文件按一定的規則Copy到特定的目錄下便可自行被Axis部署。具體步驟如下:
    ? 將上面寫的SayHello.java復制到axis目錄下。
    ? 改名為SayHello.jws。
    注意:在你寫的類中不能有具體包的信息,因為這正是Axis即時部署不支持的。
    運行我們前面寫的客戶端進行測試,運行結果是hello!。
    目前你是否有如下的問題?
    如果類中用多態的函數將如何處理?
    其實很簡單,我們知道在每次發出調用請求之前代理程序在后臺會直接請求你給的URL,這里是http://localhost:8080/axis/SayHello.jws?wsdl,其實這一請求返回來的是WSDL描述文件,通過具體的描述文件的內容和你輸入的參數的類型比較,最終確定發送什么請求。細節上的解釋需要用戶閱讀SOAP的具體內容。我也會提供相應的權威文當翻譯的。
    Axis的客戶端默認就是通過HTTP協議傳輸嗎?
    如何將自己定義的類型進行映射?
    通過WSDD自定義部署
    上面的自動部署相當簡單,但當你需要
    ? 映射自己的類型時
    ? 不需要暴露源代碼時
    ? 需要自己的路徑和包管理時
    ? 對用戶操作Web Services的事件進行相應時
    就需要通過WSDD來自定義部署。
    前面新特性中提到過,Axis是一個很靈活的可配置系統,但在配置之前你得懂得Axis Web Services描述文檔(WSDD)的格式和意義。這里有一個簡單的例子(deploy.wsdd):

    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    java:RPC">


    很簡短的描述就會自定義對特定類以Web Services的形式發布。上面的每一個service項都會意味著開通一個相應的可被WSDL文件引用的服務。其內部描述信息將會描述從請求-處理請求-應答需要的所有核心信息。這里provider=”java:RPC”對應著相應的服務類為org.apache.axis.providers.java.RPCProvider。其實你可以通過多種方式提供相應的服務。在關于Axis的架構文章中將會詳細解釋這些內容。
    上面的各個參數我不再解釋,我想大家一看就明白。
    下面讓我們在上面的簡單配置上開始一步一步的進行各種高級配置:
    服務存活范圍
    Axis提供Session、Request和Application三種可選范圍配置。具體配置標記為:

    ...

    posted on 2006-06-08 18:06 xiaofeng 閱讀(176) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    收藏夾

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲成a人片77777kkkk| 亚洲精品精华液一区二区| 国产卡二卡三卡四卡免费网址| 亚洲乱码中文字幕在线| 久久亚洲高清综合| 91高清免费国产自产| 老司机免费午夜精品视频| 亚洲视频在线观看一区| 国产不卡免费视频| 日韩av无码久久精品免费| 亚洲国产成人手机在线观看| 亚洲精品高清国产一线久久| 无码国产精品久久一区免费| 美女网站在线观看视频免费的| 亚洲婷婷第一狠人综合精品| 国产亚洲精品a在线观看| 91视频国产免费| 国产永久免费高清在线| 亚洲av午夜电影在线观看| 亚洲国产一区在线| 国产成人亚洲精品91专区手机| 国产一卡2卡3卡4卡无卡免费视频| 一边摸一边桶一边脱免费视频| 亚洲精品伊人久久久久| 亚洲国产婷婷六月丁香| 国产又大又粗又硬又长免费| 最近中文字幕mv免费高清在线 | 成年私人影院免费视频网站| 免费一区二区无码东京热| 爱情岛亚洲论坛在线观看| 亚洲国产成人久久99精品| 亚洲人JIZZ日本人| 亚洲国产精品无码久久九九| 猫咪社区免费资源在线观看| 无码A级毛片免费视频内谢| 免费无码一区二区| 色偷偷亚洲男人天堂| 亚洲精品人成网在线播放影院| 亚洲乱亚洲乱淫久久| 亚洲色成人WWW永久网站| 亚洲午夜国产片在线观看|