`

Axis中WSDL描述文件的详细介绍Axis中WSDL描述文件的详细介绍

阅读更多
Axis 中使用WSDL文件的详细介绍  

     <deployment>:告诉Axis Engine这是一个部署描述文件。一个部署描述文件可以表示一个完整的engine配置或者将要部署到一个活动active的一部分组件。

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

·            <parameter> : 用来设置Axis的各种属性,参考Global Axis Configuration,可以配置任意数量的参数元素.

·            <role> : 设置一个SOAP actor/role URI,engine可以对它进行识别。这允许指向这个role的SOAP headers成功的被engine处理。任意数量.

·            <requestFlow> : 全局的请求Handlers。在调用实际的服务之前调用.

·            <responseFlow> : 全局响应Handlers,在调用完实际的服务后,还没有返回到客户端之前调用.

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

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

         <undeployment>部署文档的根元素,用于指示Axis这是个卸载描述文件.

     <handler [name="name"] type="type">位于顶层元素<deployment> or <undeployment>, or inside a <chain>, <requestFlow>, or <responseFlow>. 用于定义Handler,并定义handler的类型。"Type" 可以是已经定义的Handler或者是"java:class.name"形式的QName。可选的"name"属性允许将这个Handler的定义在其他部署描述部分中引用。可以包含任意数量的<parameter name="name" value="value">元素.

     <service name="name" provider="provider" >部署/卸载一个Axis服务。这是最复杂的一个WSDD标签。Options可能通过以下元素来指定: <parameter name="name" value="value"/>, 一些常用的包括:·   className : 后台实现的类 allowedMethods : 每个provider可以决定那些方法允许web services访问

Axis支持的providers有如下几种:

   Java RPC Provider (provider="java:RPC") 默认情况下所有的public方法都可以web service方式提供Java MsgProvder (provider="java:MSG") 为了更进一步的限制上面的方法,allowedMethods选项用于指定一个以空格分隔的方法名,只有这些方法可以通过web service访问。也可以将这个值指定为”*”表示所有的方法都可以访问。同时operation元素用来更进一步的定义被提供的方法,但是它不能决定方法的可见性. 注意,发布任何web service都有安全含义.

·        allowedRoles : 都好分离的允许访问服务的角色列表。注意,这些是安全角色,和SOAP角色相反。安全角色控制访问,SOAP角色控制哪些SOAPheaders会被处理。

·        extraClasses : 指定一个空格或者都好分离的类名称列表,这些类的名字应该被包含在WSDL文档的类型定义部分。当服务接口引用一个基类的时候,或者希望WSDL文件包含其他类的XML Schema类型定义的时候,这个参数很有用。

    如果希望为服务定义handler,可以在<service>元素中添加<requestFlow>和<responseFlow>子元素。他们的语义和<chain>元素中的定义时一样的。也就是说,它们可以包含<handler> and <chain> 元素,根据指定的顺序被调用.

通过服务的Handlers来控制角色,可以在服务声明中指定任意数量的<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>标签指定关于服务的特殊操作的元数据。这可以将方法的java参数名和特定的XML名进行映射,为参数指定特定的模式,并将特定的XML名字映射到特定的操作。例如

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

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

     定义一个链。当chain被调用的时候,按顺序调用其中的handler。这样就可以构建一个常用功能的模块,chain元素的子元素可以是handler或者chain。handler的定义形式可以是如下两种方式:
<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">



     定义了一个服务器端的传输。当一个输入请求到达的时候,服务器传输被调用。服务器传输可能定义<requestFlow> and/or <responseFlow> 元素来指定handlers/chains,在请求和响应被处理的时候被调用,这个功能和service元素中的功能一样。典型的传输请求响应handler实现了关于传输的功能。例如转换协议headers等等.

     对于任何种类的传输,经常是指HTTP传输,当特定的查询字符串传递到servlet的时候用户可能允许Axis servlets执行任意的动作,以plug-in的方式。 (参考Axis Servlet Query String Plug-ins).当查询字符串handler的类名被指导后,用户可以通过在<transport>中添加合适的<parameter>来启用它(插件)。
<transport name="http">

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

     <parameter name="qs.name" value="class.name" />

</transport>




     在上面的例子中,AxisServlet会处理的查询字符串是?name,它调用的类是class.name。

   <parameter>元素的name属性必须加上前缀qs来表示这个元素定义了一个查询字符串handler。value属性值相实现了org.apache.axis.transport.http.QSHandler 接口的类。默认情况下,Axis提供了三个Axis servlet查询字符串handlers (?list, ?method, and ?wsdl). 查看Axis服务器配置文件来了解它们的定义。如果不希望使用默认的handlers,就设置"useDefaultQueryStrings" 为false。默认会被设置成true.

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

     定义了一个客户端的传输,当发送SOAP消息的时候来调用。"pivot"属性指定一个Handler来作为实际的传输sender,例如HTTPSender。请求和响应流和服务器端的设置相同. <typeMapping qname="ns:localName" classname="classname" serializer="classname" deserializer="classname"/> 每个typeMapping将一个XML qualified名字和一个Java类进行映射,使用一个序列器和反序列器。

<beanMapping qname="ns:localName" classname="classname">讲话的类型映射,使用一个预定义的序列器/反序列器来编码/解码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配置参数

服务默认的是通过server-config.wsdd文件中的值来进行配置的。但是熟练的Axis用户可以写自己的配置handler,这样就可以将配置数据保存在LDAP服务器,数据库或者远程的web service等等。查看源代码来了解如何实现。也可以在web.xml文件中使自动的获取配置信息。但是Axis不推荐这样使用,因为最好将配置信息放在一个位置。

在server-config文件中,有一个全局配置部分,支持以名/值对的形式作为嵌套元素使用。
<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>



单独的Service(服务)配置
<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>



单独的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的配置很容易理解,各个参数也都使用了self-explanation的表示,所以这里就不再赘述了。

同时Axis还定义日志配置以及一些预定义的Handler,详细内容,参考Axis的参考文档。
分享到:
评论

相关推荐

    抛出无法找到主类:org.apache.axis.wsdl.WSDL2Java

    抛出无法找到主类:org.apache.axis.wsdl.WSDL2Java(Throws Could not find main class: org.apache.axis.wsdl.WSDL2Java)。 添加本文的jar包压缩包解压出来的所有jar包到当前使用的java.exe 命令的lib目录下的ext...

    Axis2 接口生成wsdl工具

    - `repository`:存储服务和模块的部署元数据,包括服务描述文件和服务实现类。 **5. Spring 和 JSON 支持** Axis2集成了Spring框架,允许开发者利用Spring的依赖注入和事务管理等特性来构建Web服务。同时,它还...

    webService通过axis编辑wsdl文件生成代码

    webService通过axis编辑wsdl文件生成代码

    使用axis将wsdl文件转换为java代码

    只需将服务实现类打包成`.aar`(Axis Archive)文件,然后通过管理控制台或命令行工具部署到`Axis2`服务器。 - **模块化**:`Axis2`支持模块化,可以根据需要加载或卸载特定的功能模块。 - **多协议支持**:除了...

    axis2根据wsdl生成java客户端代码

    axis2根据wsdl生成java客户端代码 D:\Software\axis2-1.6.2\bin&gt;wsdl2java.bat -uri http://10.33.30.216:9099/facs/services/ResourceSynchroWebService?wsdl -o E:\wsdloutput -p com.util wsdl2java.bat -uri ...

    使MyEclipse调用Axis的wsdl2java 通过wsdl生成客户端

    3. 导入WSDL文件:将包含Web服务描述的WSDL文件复制到项目中,例如`testwsclient`项目的根目录下。你可以从提供Web服务的服务器上获取此文件,或者通过URL下载。 4. 使用Axis生成客户端代码:在MyEclipse中,右键...

    axis解析wsdl所需jar

    当我们需要通过Axis解析WSDL文件时,有几款特定的JAR文件是必不可少的。这些JAR文件提供了必要的类库和功能,使我们能够处理WSDL文件并生成相应的客户端和服务端代码。 首先,`axis-1.4.jar`是Axis的核心库,包含了...

    一个wsdl文件,用axis2解析

    一个wsdl文件,用axis2解析,一个wsdl文件,用axis2解析,

    axis1将wsdl文件装换java文件

    本篇文章将详细探讨如何使用`Axis1`将`WSDL`(Web服务描述语言)文件转换为Java源代码,以便于实现服务的客户端或者服务端接口。 `WSDL`文件是XML格式的,它定义了Web服务的接口,包括服务的位置、提供的操作以及如何...

    axis WSDL2Java

    Apache Axis是用于构建和部署Web服务的一个开源框架,而WSDL2Java是其核心功能之一,用于从WSDL(Web服务描述语言)文件生成Java客户端和服务端的 stubs、skeletons和其他必要的类,从而简化了Web服务的开发过程。...

    axis以及wsdl的jar包

    Axis提供了从WSDL文件生成Java代码的能力,这样开发者就可以在Java应用程序中直接调用Web服务。同时,它也可以将Java类转换为WSDL文件,使得其他开发者可以使用这些服务。 在创建以WSDL接口并使用Axis访问接口时,...

    axis生成wsdl的JAVA客户端服务接口

    在描述中提到的“博文链接:https://zhouyq.iteye.com/blog/366921”,这可能是一个博客文章,详细介绍了如何使用Apache Axis从WSDL文件生成Java客户端代码的步骤。虽然具体内容未给出,但通常这样的教程会涵盖以下...

    电信sms的WSDL描述文件

    综上所述,"电信sms的WSDL描述文件"是开发者与电信短信服务交互的重要桥梁,它详细规定了服务的接口和通信规范,使得开发工作更加标准化和便捷。通过理解和利用这个文件,开发者能够构建出与电信短信系统无缝对接的...

    SoapUI测试工具WSDL文件生成--个人总结

    本文将详细介绍如何使用SoapUI与WSDL文件相结合进行接口测试的方法,特别关注于如何通过Eclipse或PHP_ZendStudio生成WSDL文件。 #### 二、什么是WSDL文件? WSDL(Web Services Description Language)是一种基于...

    用Axis2快速发布自己的wsdl服务

    本教程将详细介绍如何使用Axis2快速发布自己的WSDL(Web Service Definition Language)服务。 首先,我们需要理解WSDL是什么。WSDL是一种XML格式的规范,用于定义Web服务接口,包括服务的位置、提供的操作以及如何...

    Axis 把WSDL生成JAVA类

    - **类生成策略**:对于每个在WSDL中定义的操作,WSDL2Java会生成相应的Java接口和实现类(存根或骨架)。每个类都有对应的get和set方法,以便于数据的封装和解封。 - **序列化支持**:生成的Java类通常实现了`...

    java axis 调用 wsdl 所需要的jar,含(javax.wsdl、commons-discovery-0.2、axis-1.4)

    java axis 调用 wsdl 所需要的jar,包含(javax.wsdl、commons-logging、commons-discovery-0.2、axis-1.4、activation、jaxrpc、mail、fastjson-1.1.37)

    axis2 1.6.2 生产wsdl客户端代码

    本文将详细介绍如何使用Axis2 1.6.2版本来生成基于WSDL的Web服务客户端代码。 首先,了解WSDL(Web Service Description Language)是什么至关重要。WSDL是一种XML格式的规范,用于描述Web服务及其接口。它定义了...

    WSDL使用axis2生成代码项目

    5. 创建服务部署文件:生成的服务部署描述文件(.aar)包含了服务的所有组件。使用`axistools:maven-aar-plugin` Maven插件或者手动打包生成此文件。 6. 部署服务:将.aar文件复制到Axis2的repository/services目录...

Global site tag (gtag.js) - Google Analytics