拾貝殼

          走過的路
          隨筆 - 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 閱讀(631) 評論(0)  編輯  收藏 所屬分類: J2EE

          主站蜘蛛池模板: 武威市| 龙口市| 邮箱| 姚安县| 五华县| 吴堡县| 社会| 合作市| 东平县| 佛山市| 腾冲县| 崇信县| 罗甸县| 甘肃省| 麟游县| 尼木县| 额尔古纳市| 绵竹市| 神农架林区| 老河口市| 郎溪县| 长治县| 苍梧县| 鄂州市| 江山市| 同德县| 丹阳市| 太白县| 陈巴尔虎旗| 吉木萨尔县| 通江县| 巢湖市| 应城市| 盐亭县| 康乐县| 临夏县| 神池县| 翁牛特旗| 老河口市| 广水市| 东台市|