lqxue

          常用鏈接

          統(tǒng)計(jì)

          book

          tools

          最新評(píng)論

          [收藏]Axis中WSDL描述文件的詳細(xì)介紹Axis中WSDL描述文件的詳細(xì)介紹

          Axis 中使用WSDL文件的詳細(xì)介紹  

               <deployment>:告訴Axis Engine這是一個(gè)部署描述文件。一個(gè)部署描述文件可以表示一個(gè)完整的engine配置或者將要部署到一個(gè)活動(dòng)active的一部分組件。

               <GlobalConfiguration>:用于控制engine范圍的配置。可以包含以下子元素:

          ·            <parameter> : 用來設(shè)置Axis的各種屬性,參考Global Axis Configuration,可以配置任意數(shù)量的參數(shù)元素.

          ·            <role> : 設(shè)置一個(gè)SOAP actor/role URIengine可以對(duì)它進(jìn)行識(shí)別。這允許指向這個(gè)roleSOAP headers成功的被engine處理。任意數(shù)量.

          ·            <requestFlow> : 全局的請(qǐng)求Handlers。在調(diào)用實(shí)際的服務(wù)之前調(diào)用.

          ·            <responseFlow> : 全局響應(yīng)Handlers,在調(diào)用完實(shí)際的服務(wù)后,還沒有返回到客戶端之前調(diào)用

                   <requestFlow [name="name"] [type="type"] >可以放置任意多個(gè)<handler> or <chain><requestFlow>中,但是可能只有一個(gè)<requestFlow>. 

                   <responseFlow [name="name"] [type="type"] >可以放置任意多個(gè)<handler> or <chain>< responseFlow >中,但是可能只有一個(gè)< responseFlow >. 

                   <undeployment>部署文檔的根元素,用于指示Axis這是個(gè)卸載描述文件.

               <handler [name="name"] type="type">位于頂層元素<deployment> or <undeployment>, or inside a <chain>, <requestFlow>, or <responseFlow>. 用于定義Handler,并定義handler的類型。"Type" 可以是已經(jīng)定義的Handler或者是"java:class.name"形式的QName。可選的"name"屬性允許將這個(gè)Handler的定義在其他部署描述部分中引用。可以包含任意數(shù)量的<parameter name="name" value="value">元素

               <service name="name" provider="provider" >部署/卸載一個(gè)Axis服務(wù)。這是最復(fù)雜的一個(gè)WSDD標(biāo)簽。Options可能通過以下元素來指定: <parameter name="name" value="value"/>, 一些常用的包括:·   className : 后臺(tái)實(shí)現(xiàn)的類 allowedMethods : 每個(gè)provider可以決定那些方法允許web services訪問

           Axis支持的providers有如下幾種:

             Java RPC Provider (provider="java:RPC") 默認(rèn)情況下所有的public方法都可以web service方式提供Java MsgProvder (provider="java:MSG") 為了更進(jìn)一步的限制上面的方法,allowedMethods選項(xiàng)用于指定一個(gè)以空格分隔的方法名,只有這些方法可以通過web service訪問。也可以將這個(gè)值指定為”*”表示所有的方法都可以訪問。同時(shí)operation元素用來更進(jìn)一步的定義被提供的方法,但是它不能決定方法的可見性. 注意,發(fā)布任何web service都有安全含義.

          ·        allowedRoles : 都好分離的允許訪問服務(wù)的角色列表。注意,這些是安全角色,和SOAP角色相反。安全角色控制訪問,SOAP角色控制哪些SOAPheaders會(huì)被處理。

          ·        extraClasses : 指定一個(gè)空格或者都好分離的類名稱列表,這些類的名字應(yīng)該被包含在WSDL文檔的類型定義部分。當(dāng)服務(wù)接口引用一個(gè)基類的時(shí)候,或者希望WSDL文件包含其他類的XML Schema類型定義的時(shí)候,這個(gè)參數(shù)很有用。

              如果希望為服務(wù)定義handler,可以在<service>元素中添加<requestFlow><responseFlow>子元素。他們的語義和<chain>元素中的定義時(shí)一樣的。也就是說,它們可以包含<handler> and <chain> 元素,根據(jù)指定的順序被調(diào)用.

          通過服務(wù)的Handlers來控制角色,可以在服務(wù)聲明中指定任意數(shù)量的<role>元素。

          例如:

          <service name="test">

               <parameter name="className" value="test.Implementation"/>

               <parameter name="allowedMethods" value="*"/>

               <namespace>http://testservice/</namespace>

               <role>http://testservice/MyRole</role>

               <requestFlow> <!-- Run these before processing the request -->

                     <handler type="java:MyHandlerClass"/>"

                     <handler type="somethingIDefinedPreviously"/>

               </requestFlow>

          </service>

              可以通過使用<operation>標(biāo)簽指定關(guān)于服務(wù)的特殊操作的元數(shù)據(jù)。這可以將方法的java參數(shù)名和特定的XML名進(jìn)行映射,為參數(shù)指定特定的模式,并將特定的XML名字映射到特定的操作。例如

          <operation name="method"> </operation>  

          <chain name="name"><subelement/>...</chain>

               定義一個(gè)鏈。當(dāng)chain被調(diào)用的時(shí)候,按順序調(diào)用其中的handler。這樣就可以構(gòu)建一個(gè)常用功能的模塊,chain元素的子元素可以是handler或者chainhandler的定義形式可以是如下兩種方式:

          <chain name="myChain">
              <handler type="java:org.apache.axis.handlers.LogHandler"/>

          </chain>

          或者

          <handler name="logger" type="java:org.apache.axis.handlers.LogHandler"/>
              <chain name="myChain"/>
                   <handler type="logger"/>

              </chain> 

          <transport name="name">

               定義了一個(gè)服務(wù)器端的傳輸。當(dāng)一個(gè)輸入請(qǐng)求到達(dá)的時(shí)候,服務(wù)器傳輸被調(diào)用。服務(wù)器傳輸可能定義<requestFlow> and/or <responseFlow> 元素來指定handlers/chains,在請(qǐng)求和響應(yīng)被處理的時(shí)候被調(diào)用,這個(gè)功能和service元素中的功能一樣。典型的傳輸請(qǐng)求響應(yīng)handler實(shí)現(xiàn)了關(guān)于傳輸?shù)墓δ堋@甾D(zhuǎn)換協(xié)議headers等等

               對(duì)于任何種類的傳輸,經(jīng)常是指HTTP傳輸,當(dāng)特定的查詢字符串傳遞到servlet的時(shí)候用戶可能允許Axis servlets執(zhí)行任意的動(dòng)作,以plug-in的方式。 (參考Axis Servlet Query String Plug-ins).當(dāng)查詢字符串handler的類名被指導(dǎo)后,用戶可以通過在<transport>中添加合適的<parameter>來啟用它(插件)

          <transport name="http">
               <parameter name="useDefaultQueryStrings" value="false" />
               <parameter name="qs.name" value="class.name" />

          </transport>

               在上面的例子中,AxisServlet會(huì)處理的查詢字符串是?name,它調(diào)用的類是class.name

             <parameter>元素的name屬性必須加上前綴qs來表示這個(gè)元素定義了一個(gè)查詢字符串handlervalue屬性值相實(shí)現(xiàn)了org.apache.axis.transport.http.QSHandler 接口的類。默認(rèn)情況下,Axis提供了三個(gè)Axis servlet查詢字符串handlers (?list, ?method, and ?wsdl). 查看Axis服務(wù)器配置文件來了解它們的定義。如果不希望使用默認(rèn)的handlers,就設(shè)置"useDefaultQueryStrings" false。默認(rèn)會(huì)被設(shè)置成true.

                 <transport name="name" pivot="handler type" >

               定義了一個(gè)客戶端的傳輸,當(dāng)發(fā)送SOAP消息的時(shí)候來調(diào)用。"pivot"屬性指定一個(gè)Handler來作為實(shí)際的傳輸sender,例如HTTPSender。請(qǐng)求和響應(yīng)流和服務(wù)器端的設(shè)置相同. <typeMapping qname="ns:localName" classname="classname" serializer="classname" deserializer="classname"/> 每個(gè)typeMapping將一個(gè)XML qualified名字和一個(gè)Java類進(jìn)行映射,使用一個(gè)序列器和反序列器。 

          <beanMapping qname="ns:localName" classname="classname">講話的類型映射,使用一個(gè)預(yù)定義的序列器/反序列器來編碼/解碼JavaBeans 

                <documentation><service>, <operation> 或者操作的<parameter>中使用。.是文檔說明,生成wsdl<wsdl:document>元素.

          Example:
          <operation name="echoString" >
                <documentation>This operation echoes a string</documentation>  

               <parameter name="param">
                       <documentation>a string</documentation>
                </parameter>
          </operation>

          全局的Axis配置參數(shù)

          服務(wù)默認(rèn)的是通過server-config.wsdd文件中的值來進(jìn)行配置的。但是熟練的Axis用戶可以寫自己的配置handler,這樣就可以將配置數(shù)據(jù)保存在LDAP服務(wù)器,數(shù)據(jù)庫或者遠(yuǎn)程的web service等等。查看源代碼來了解如何實(shí)現(xiàn)。也可以在web.xml文件中使自動(dòng)的獲取配置信息。但是Axis不推薦這樣使用,因?yàn)樽詈脤⑴渲眯畔⒎旁谝粋€(gè)位置。

          server-config文件中,有一個(gè)全局配置部分,支持以名/值對(duì)的形式作為嵌套元素使用。

          <globalConfiguration>

              <parameter name="adminPassword" value="admin"/>

              <parameter name="axis.servicesPath" value="/services/"/>

              <parameter name="attachments.Directory" value="c:"temp"attachments"/>

              <parameter name="sendMultiRefs" value="true"/>

              <parameter name="sendXsiTypes" value="true"/>

              <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>

              <parameter name="sendXMLDeclaration" value="true"/>

              <parameter name="enable2DArrayEncoding" value="true"/>

              <parameter name="dotNetSoapEncFix" value="false"/>

          </globalConfiguration>

          單獨(dú)的Service(服務(wù))配置

          <service name="MyServiceName"

                             provider="java:RPC"

                             style="rpc|document|wrapped"

                             use="encoded|literal"

                             streaming="off|on"

                             attachment="MIME|DIME|NONE">

            <parameter name="className" value="org.apache.mystuff.MyService"/>

           <parameter name="allowedMethods" value="method1 method2 method3"/>

           <parameter name="wsdlTargetNamespace" value="http://mystuff.apache.org/MyService"/>

           <parameter name="wsdlServiceElement" value="MyService"/>

           <parameter name="wsdlServicePort" value="MyServicePort"/>

           <parameter name="wsdlPortType" value="MyPort"/>

           <parameter name="wsdlSoapActionMode" value="NONE|DEFAULT|OPERATION"/>

            <parameter name="SingleSOAPVersion" value="1.1|1.2/>

            <documentation>Service level info</documentation>

           <endpointURL>http://example.com:5050/my/custom/url/to/service</endpointURL>

           <wsdlFile>/path/to/wsdl/file</wsdlFile>

           <namespace>http://my.namespace.com/myservice</namespace>

           <handlerInfoChain>handlerChainName</handlerInfoChain>

           <operation ... />

           <typeMapping ... />

           <beanMapping ... />

          </service>

          單獨(dú)的Operation(操作)配置

          <operation name="GetQuote"

                     qname="operNS:GetQuote"

                     returnQName="GetQuoteResult"

                     returnType="xsd:float"

                     soapAction=""

                     returnHeader="true|false">

              <documentation>Operation level documentation here</documentation>

              <parameter name="ticker" type="tns:string"/>

              <fault name="InvalidTickerFaultMessage"

                     qname="tickerSymbol"

                     class="test.wsdl.faults.InvalidTickerFaultMessage"

                     type="xsd:string"/>

          </operation>

              由于Service的配置和Operation的配置很容易理解,各個(gè)參數(shù)也都使用了self-explanation的表示,所以這里就不再贅述了。

          同時(shí)Axis還定義日志配置以及一些預(yù)定義的Handler,詳細(xì)內(nèi)容,參考Axis的參考文檔。

          From:http://gocom.primeton.com/blog9288_29578.htm

          posted on 2008-05-27 17:18 lqx 閱讀(1048) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 德钦县| 喀喇| 泰来县| 遂平县| 微山县| 上思县| 如东县| 岱山县| 四川省| 海原县| 沙田区| 临洮县| 拉孜县| 凤翔县| 郧西县| 保康县| 嵊州市| 富裕县| 加查县| 瑞金市| 汾西县| 商洛市| 佛冈县| 容城县| 浠水县| 大庆市| 新乐市| 万宁市| 望都县| 邳州市| 阿坝县| 木兰县| 颍上县| 慈利县| 云阳县| 和平县| 龙门县| 孝感市| 岱山县| 临泉县| 阳曲县|