拾貝殼

          走過的路
          隨筆 - 39, 文章 - 1, 評論 - 14, 引用 - 0
          數據加載中……

          axis userguide(3)

          服務類型

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

          RPC服務
             這個服務是axis默認的服務。我們在前面的例子中寫的就是rpc服務。<service ... provider="java:RPC"> 。rpc服務遵從soap rpc規范和編碼規則,意味著來自rpc服務的xml將類似上面例子中的“echoString”--每個rpc調用被模塊化為一個外部元素,匹配操作名稱,并包含了很多內部元素,每一個都是操作的一個參數。axis將把這些xml轉化為java對象,配送給你得服務,并將序列化來自服務的java對象為xml.因為rpc服務默認采用soap section 5規則,對象將會通過"multi-ref" 序列化來編碼。
          Document / Wrapped 服務
           這2個服務很類似,都不需要用soap編碼來處理數據。他就是一個普通的xml格式。無論哪種情況,axis還是對他們做了xml到java得榜定,所以你最終處理的還是java對象,而不是xml結構的字符串。
           下面的例子來說明他們2個之間的區別。
           <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>

          相關的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>

          對于一個document服務來說,他將對應到這樣的方法
          public void method(PurchaseOrder po)

          換句話說,整個PurchaseOrder元素將被處理為一個單一的對象,包含3個屬性。
          而對于wrapped服務來說,他對應于下面的方法
          public void purchaseOrder(String item, int quantity, String description)
          注意到,在wrapped中,PurchaseOrder元素被映射為代表了一個方法。他的參數就是他的那些元素。
          他們在wsdd得使用如下
          <service ... style="document"> for document style
          <service ... style="wrapped"> for wrapped style
          Message 服務
            當你需要處理純xml而不是java對象時,你將會用到這種服務。
            message服務的方法有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 閱讀(626) 評論(0)  編輯  收藏 所屬分類: J2EE

          主站蜘蛛池模板: 沁阳市| 云阳县| 阿拉善盟| 全州县| 广昌县| 尼玛县| 中宁县| 山阴县| 安达市| 溧阳市| 新竹市| 拉萨市| 江安县| 张家港市| 梅河口市| 岳池县| 新民市| 雅安市| 铁岭市| 乳山市| 乌恰县| 云和县| 永仁县| 阳泉市| 南雄市| 城固县| 沁水县| 闽清县| 古丈县| 荣昌县| 时尚| 裕民县| 南投县| 拜城县| 克东县| 新宾| 崇左市| 黄石市| 南平市| 辽中县| 甘德县|