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

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

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

    樂在其中

    以JEE為主攻,以Flex為點綴,以Eclipse RCP為樂趣
    請訪問http://www.inframesh.org

    首頁 新隨筆 聯系 管理
      43 Posts :: 0 Stories :: 8 Comments :: 0 Trackbacks

    最近寫Web service, 很多代碼是用工具生成的,可以說只知其然,不知其所以然。于是,去網上搜了寫wsdl的規范看了看,初步理了理頭緒,總結一下。

    1. wsdl文件格式的結構比較固定,總共分那么幾塊:definitions/type/message/portType/binding/service,每一塊handle不同的職責

    2. 一般建議定義單獨的xml schema, 然后在不同的wsdl中復用

    3. 綁定部分很靈活,你可以選擇不同的協議綁定,我們主要綁定到soap

    4. server-side和client-side部分的代碼生成可以借助不同的工具,我使用的axis2. 不過生成的代碼比較難看。axis2是個SOAP engin

    具體wsdl詳解可以參考天極網的一個專題:http://www.yesky.com/zhuanti/259/200759.shtml

    下面是就我寫的一個wsdl文件做得注解:

    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions 
        targetNamespace="http://services.icms.********.com/abstraction/atomic/icms/splitRawCollateral/"
        xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
        xmlns:tns="http://services.icms.********.com/abstraction/atomic/icms/splitRawCollateral/" 
        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
        xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
        name="splitRawCollateral">
    <!--  
    xmlns:soap, xmlns:tns, xmlns:wsdl, xmlns:xsd分別定義了命名空間縮寫,后面就可以如下使用:soap:int ..
    xmlns:tns 一般指當前namespace的縮寫(ThisNameSpace),即與targetNamespace相同
    -->
     
      <!-- ===================================== 抽象定義 ===============================================   -->
      
      <!-- +++++++++++++++ Types(獨立于機器和語言的類型定義) ++++++++++++++++++++ -->
      <wsdl:types>
        <xsd:schema targetNamespace="http://services.icms.********.com/abstraction/atomic/icms/splitRawCollateral/" 
                    xmlns:Q1="http://services.icms.********.com/abstraction/atomic/icms/splitRawCollateral/schema">
          <!-- ++++引入已定義的schema文件++++++ -->
          <xsd:import schemaLocation="splitRawCollateral.xsd" namespace="http://services.icms.********.com/abstraction/atomic/icms/splitRawCollateral/schema">
          </xsd:import>
          <xsd:element name="queryRawCollateralByCustomer">
            <xsd:complexType>
              <xsd:sequence>
     
                  <xsd:element ref="Q1:customerBO" minOccurs="0" maxOccurs="1"></xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="queryRawCollateralByCustomerResponse">
            <xsd:complexType>
              <xsd:sequence>
     
                  <xsd:element ref="Q1:customerBO" minOccurs="0" maxOccurs="unbounded"></xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="savaSplittedCollateral">
              <xsd:complexType>
                  <xsd:sequence>
     
                      <xsd:element ref="Q1:rawCollateralBO"></xsd:element>
                  </xsd:sequence>
              </xsd:complexType>
          </xsd:element>
          <xsd:element name="savaSplittedCollateralResponse">
              <xsd:complexType>
                  <xsd:sequence>
     
                      <xsd:element name="result" type="xsd:string"></xsd:element>
                  </xsd:sequence>
              </xsd:complexType>
          </xsd:element>
        </xsd:schema>
      </wsdl:types>
      
      <!-- +++++++++++++++ Message(包括函數參數(輸入與輸出分開)或文檔描述) ++++++++++++++++++++ -->
      <wsdl:message name="queryRawCollateralByCustomerRequest">
        <wsdl:part name="queryRawCollateralByCustomerRequest" element="tns:queryRawCollateralByCustomer" />
      </wsdl:message>
      <wsdl:message name="queryRawCollateralByCustomerResponse">
        <wsdl:part name="queryRawCollateralByCustomerResponse" element="tns:queryRawCollateralByCustomerResponse" />
      </wsdl:message>
      <wsdl:message name="savaSplittedCollateralRequest">
          <wsdl:part name="savaSplittedCollateralRequest" element="tns:savaSplittedCollateral" />
      </wsdl:message>
      <wsdl:message name="savaSplittedCollateralResponse">
          <wsdl:part name="savaSplittedCollateralResponse" element="tns:savaSplittedCollateralResponse" />
      </wsdl:message>
      
      <!-- +++++++++++++++ PortType(引用消息部分中消息定義來描述函數簽名(操作名、輸入參數、輸出參數)) ++++++++++++++++++++ -->
      <wsdl:portType name="splitRawCollateral">
        <wsdl:operation name="queryRawCollateralByCustomer">
          <wsdl:input message="tns:queryRawCollateralByCustomerRequest"/>
          <wsdl:output message="tns:queryRawCollateralByCustomerResponse"/>
        </wsdl:operation>
        <wsdl:operation name="savaSplittedCollateral">
            <wsdl:input message="tns:savaSplittedCollateralRequest" />
            <wsdl:output message="tns:savaSplittedCollateralResponse" />
        </wsdl:operation>
      </wsdl:portType>
      
      <!-- ===================================== 具體定義 ===============================================   -->
      
      <!-- +++++++++++++++ Binding(PortTypes部分的每一操作在此綁定實現) ++++++++++++++++++++ -->
      <wsdl:binding name="splitRawCollateralSOAP" type="tns:splitRawCollateral">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="queryRawCollateralByCustomer">
          <soap:operation soapAction="http://services.icms.********.com/abstraction/atomic/icms/splitRawCollateralService/queryRawCollateralByCustomer"/>
          <wsdl:input>
            <soap:body use="literal"/>
          </wsdl:input>
          <wsdl:output>
            <soap:body use="literal"/>
          </wsdl:output>
        </wsdl:operation>
        
        <wsdl:operation name="savaSplittedCollateral">
          <soap:operation soapAction="http://services.icms.********.com/abstraction/atomic/icms/splitRawCollateralService/savaSplittedCollateral"/>
          <wsdl:input>
            <soap:body use="literal"/>
          </wsdl:input>
          <wsdl:output>
            <soap:body use="literal"/>
          </wsdl:output>
        </wsdl:operation>
      </wsdl:binding>
      
      <!-- +++++++++++++++ Service(確定每一綁定的端口地址) ++++++++++++++++++++ -->
      <wsdl:service name="splitRawCollateral">
        <wsdl:port binding="tns:splitRawCollateralSOAP" name="splitRawCollateralSOAP">
          <soap:address location="http://www.example.org/"/>
        </wsdl:port>
      </wsdl:service>
      
    </wsdl:definitions>
    posted on 2008-12-15 11:27 suprasoft Inc,. 閱讀(3794) 評論(0)  編輯  收藏

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


    網站導航:
     
    ©2005-2008 Suprasoft Inc., All right reserved.
    主站蜘蛛池模板: 亚洲熟妇少妇任你躁在线观看| 国产AV无码专区亚洲Av| 亚洲人成7777| 成年人视频免费在线观看| 亚洲欧洲一区二区| 免费无码中文字幕A级毛片| 亚洲精品在线观看视频| 18禁止看的免费污网站| 亚洲人成电影院在线观看| 国产va免费精品观看精品| 亚洲欧美日韩国产精品一区| 免费特级黄毛片在线成人观看| 久久精品国产亚洲av品善| 亚洲а∨天堂久久精品| 99麻豆久久久国产精品免费| 亚洲av无码一区二区三区不卡| 日韩中文字幕免费视频| 亚洲综合小说另类图片动图| 日韩一级免费视频| av午夜福利一片免费看久久| 久久精品亚洲一区二区| 丁香花免费完整高清观看| 亚洲国产欧洲综合997久久| 亚洲精品中文字幕无乱码| 日韩版码免费福利视频| 久久亚洲AV成人出白浆无码国产 | 亚洲成a人片在线观看播放| 67194成是人免费无码| 黄页网站在线观看免费| 亚洲αv久久久噜噜噜噜噜| 国产在线观看麻豆91精品免费| 亚洲欧洲无码一区二区三区| 久久精品国产精品亚洲人人| 99re在线这里只有精品免费| 亚洲国产午夜精品理论片在线播放| 亚洲情侣偷拍精品| 日韩精品免费一线在线观看| 免费看大美女大黄大色| 久久久受www免费人成| 亚洲永久精品ww47| 免费看污成人午夜网站|