<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.
    主站蜘蛛池模板: 黄色大片免费网站| 国产午夜亚洲精品国产| 国产va免费精品| 亚洲国产精品成人AV无码久久综合影院| 亚洲最大福利视频| 好吊妞在线新免费视频| 最新亚洲卡一卡二卡三新区| 黄页网站免费观看| 亚洲成av人片在线天堂无| 最好免费观看韩国+日本| 久久精品国产亚洲AV未满十八| 日韩一区二区免费视频| 国产精品久久久久久亚洲小说 | 亚洲精品永久www忘忧草| 18禁黄网站禁片免费观看不卡| 亚洲福利一区二区| 91视频国产免费| 另类图片亚洲校园小说区| 国产亚洲日韩在线三区| 久久精品一本到99热免费| 亚洲日日做天天做日日谢| 国产zzjjzzjj视频全免费| 中国精品一级毛片免费播放| 久久精品国产亚洲AV大全| 性xxxx视频播放免费| 四虎影视在线看免费观看| 久久久久亚洲精品无码系列| 亚洲成在人线aⅴ免费毛片| 视频一区在线免费观看| 亚洲国产成人片在线观看| 无码区日韩特区永久免费系列 | 在线观看亚洲网站| 久久久久久久尹人综合网亚洲| 午夜国产精品免费观看 | 在线观看亚洲AV日韩A∨| 免费在线观看亚洲| 中文无码成人免费视频在线观看| 亚洲国产成人久久77| 亚洲成A人片在线观看中文| 亚洲视频在线免费观看| 含羞草国产亚洲精品岁国产精品|