<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.
    主站蜘蛛池模板: 久久精品国产亚洲沈樵| 成人国产mv免费视频| 亚洲欧洲美洲无码精品VA| 美女免费精品高清毛片在线视| 毛片免费在线观看网址| 中文字幕 亚洲 有码 在线| 日韩中文字幕精品免费一区| 亚洲老熟女@TubeumTV| 久久精品毛片免费观看| 91亚洲精品视频| 亚洲香蕉免费有线视频| 亚洲成人动漫在线观看| 免费无码又爽又刺激聊天APP| 亚洲国产情侣一区二区三区| 999在线视频精品免费播放观看| 亚洲国产精品乱码在线观看97| 免费福利视频导航| 国产亚洲中文日本不卡二区| 国产精品美女自在线观看免费| 国产精品亚洲精品日韩电影| 亚洲国产一区二区视频网站| 中国一级特黄高清免费的大片中国一级黄色片 | 日韩在线视频免费看| 最新亚洲人成无码网站| 免费看国产一级片| 国产精品免费久久久久影院 | 亚洲综合久久久久久中文字幕| 国产乱子精品免费视观看片| 亚洲人成7777| 亚洲成A人片77777国产| 免费无码又爽又刺激网站直播| 久久亚洲私人国产精品| 永久黄网站色视频免费| 国产免费AV片在线观看播放| 亚洲avav天堂av在线不卡| 免费大片黄在线观看yw| 免费无码专区毛片高潮喷水| 亚洲av日韩av激情亚洲| 日韩精品视频免费在线观看| 久久精品免费网站网| 亚洲人成日本在线观看|