拾貝殼

          走過的路
          隨筆 - 39, 文章 - 1, 評(píng)論 - 14, 引用 - 0
          數(shù)據(jù)加載中……

          axis userguide(3)

          服務(wù)類型

          在axis中有4中服務(wù)類型
          RPC服務(wù)采用soap rpc的標(biāo)準(zhǔn),and also the SOAP "section 5" encoding.
          Document 服務(wù)沒有采用任何編碼(所以你在組裝時(shí)不會(huì)看到復(fù)雜對(duì)象的序列化以及soap-style數(shù)組),但是仍然作了xml和java對(duì)象的互映射。
          Wrapped服務(wù)和Document服務(wù)類似
          Message 服務(wù)接受和返回soap Envelope中的任意的xml而不需要mapping/data得榜定。如果你想處理來自外部的原始的xml,可以采用Message 服務(wù)。

          RPC服務(wù)
             這個(gè)服務(wù)是axis默認(rèn)的服務(wù)。我們?cè)谇懊娴睦又袑懙木褪莚pc服務(wù)。<service ... provider="java:RPC"> 。rpc服務(wù)遵從soap rpc規(guī)范和編碼規(guī)則,意味著來自rpc服務(wù)的xml將類似上面例子中的“echoString”--每個(gè)rpc調(diào)用被模塊化為一個(gè)外部元素,匹配操作名稱,并包含了很多內(nèi)部元素,每一個(gè)都是操作的一個(gè)參數(shù)。axis將把這些xml轉(zhuǎn)化為java對(duì)象,配送給你得服務(wù),并將序列化來自服務(wù)的java對(duì)象為xml.因?yàn)閞pc服務(wù)默認(rèn)采用soap section 5規(guī)則,對(duì)象將會(huì)通過"multi-ref" 序列化來編碼。
          Document / Wrapped 服務(wù)
           這2個(gè)服務(wù)很類似,都不需要用soap編碼來處理數(shù)據(jù)。他就是一個(gè)普通的xml格式。無論哪種情況,axis還是對(duì)他們做了xml到j(luò)ava得榜定,所以你最終處理的還是java對(duì)象,而不是xml結(jié)構(gòu)的字符串。
           下面的例子來說明他們2個(gè)之間的區(qū)別。
           <soap:Envelope xmlns="http://xml.apache.org/axis/wsdd/"
              xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
            <soap:Body>
              <myNS:PurchaseOrder xmlns:myNS="http://commerce.com/PO">
                <item>SK001</item>
                <quantity>1</quantity>
                <description>Sushi Knife</description>
              </myNS:PurchaseOrder>
            </soap:Body>
          </soap:Envelope>

          相關(guān)的PurchaseOrder類型定義如下:

          <schema targetNamespace="http://commerce.com/PO">
            <complexType name="POType">
              <sequence>
                <element name="item" type="xsd:string"/>
                <element name="quantity" type="xsd:int"/>
                <element name="description" type="xsd:string"/>
              </sequence>
            </complexType>
            <element name="PurchaseOrder" type="POType"/>
          </schema>

          對(duì)于一個(gè)document服務(wù)來說,他將對(duì)應(yīng)到這樣的方法
          public void method(PurchaseOrder po)

          換句話說,整個(gè)PurchaseOrder元素將被處理為一個(gè)單一的對(duì)象,包含3個(gè)屬性。
          而對(duì)于wrapped服務(wù)來說,他對(duì)應(yīng)于下面的方法
          public void purchaseOrder(String item, int quantity, String description)
          注意到,在wrapped中,PurchaseOrder元素被映射為代表了一個(gè)方法。他的參數(shù)就是他的那些元素。
          他們?cè)趙sdd得使用如下
          <service ... style="document"> for document style
          <service ... style="wrapped"> for wrapped style
          Message 服務(wù)
            當(dāng)你需要處理純xml而不是java對(duì)象時(shí),你將會(huì)用到這種服務(wù)。
            message服務(wù)的方法有4中簽名
          public Element [] method(Element [] bodies);
          public SOAPBodyElement [] method (SOAPBodyElement [] bodies);
          public Document method(Document body);
          public void method(SOAPEnvelope req, SOAPEnvelope resp);

          posted on 2008-02-17 20:31 binge 閱讀(631) 評(píng)論(0)  編輯  收藏 所屬分類: J2EE

          主站蜘蛛池模板: 华池县| 阿城市| 富锦市| 定西市| 新乐市| 乾安县| 寻甸| 镇平县| 汕尾市| 中牟县| 秦安县| 宁陕县| 托克逊县| 芒康县| 邢台市| 克山县| 理塘县| 革吉县| 郴州市| 阿合奇县| 休宁县| 乡城县| 莱州市| 平遥县| 锡林郭勒盟| 赤水市| 甘德县| 平定县| 内乡县| 沁源县| 六枝特区| 泸州市| 滕州市| 临朐县| 杭锦后旗| 濮阳县| 深圳市| 沈丘县| 台安县| 鄂托克前旗| 青浦区|