文档章节

Axis2配置指南(翻译)

abcijkxyz
 abcijkxyz
发布于 2016/07/08 16:28
字数 2762
阅读 1
收藏 0
点赞 0
评论 0

In Axis2, there are three kinds of configuration files to configure the system. The first one is to configure the whole system (global configuration), the second one is to configure a service (service configuration), and the third one is to configure a module (module configuration). This document explains the above configurations in detail.

在Aixs2中,有三个文件可以用来配置系统。第一个配置整个系统(全局配置),第二个配置一个服务(服务配置),第三个配置一个模块(模块配置)。本文档详细介绍上面的配置。

内容

全局配置

书写axis2.xml

所有在启动axis2时需要的配置信息都从axis2.xml中取得。指明它们的方法非常简单和容易。此部分都是关于如何在axis2中以合适的方式指定配置信息的,在配置文件中可以看到六个顶级元素,如下:

  • Parameter
  • Transport Receiver
  • Transport Sender
  • Phase Order
  • Module References
  • Listeners (Observers)


    Parameter:在Axis2中,parameter(参数)就是一个名-值对,axis2.xml中的每个顶级parameter元素将都被转换成AxisConfiguration中的属性,因此,配置文档中的顶级参数都可以在运行时环境中通过AxisConfiguration得到。下面是定义参数的正确的方法:

     <parameter name="name of the parameter"></parameter>


    Transport Receiver:依赖于Axis2可能需要运行于其上的传输协议(Depending on the underlying transport on which Axis2 is going to run,),你需要不同的传输接收端。在系统中加入它们的方式如下:

     

    <transportreceiver class="org.apache.axis2.transport.http.SimpleHTTPServer" name="http"> 

        <parameter name="port" >6060parameter>

    </transportreceiver>

     

     

    上面的元素说明了如何在axis2.xml中定义传输接收端,这里,transportReceiver标签中的name属性标识指明传输接收端的类型,它可以是http,tcp,smtp,CommonsHTTP等。当系统启动或者你在客户端设置传输器(transport)的时候,你可以使用这些传输名字(transport names)装载合适的传输器。class属性是为了指明为该传输器实现需要的接口的实际的java类。任何的传输都可以有0个或多个参数,任何给定的参数可以通过相应的传输接收端访问。


    Transport Sender:正如传输接收者,你可以在系统中注册传输发送者,也可以在运行时进行。发送者可以用来发送消息。例如,假设Axis2运行于Apache Tomcat中。那么Axis2可以使用TCP传输发送器来发送消息,而不是http。指明传输发送者的方法如下:

    xml 代码
    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">  
         <parameter name="PROTOCOL" locked="xsd:false">HTTP/1.0parameter>
    </transportSender>

    name:传输的名字,可以是http或者http1。

    class:相应传输的实现类。

    和传输接收者一样,传输发送者可以有0个或多个参数(例如例子中有一个parameter),如果存在,它们可以通过相应的传输发送者得到。



    Phase Order:指明执行链中阶段的顺序必须使用phase order元素。如下:

    xml 代码
    <phaseOrder type="InFlow"> 
       <phase name="TransportIn"/>  
       .
       .
    </phaseOrder> 

    最有趣的是你也可以在这里添加handler。如果你想要添加一个handler到一个阶段中,你可以直接通过在它里面添加一个handler元素来实现。除此之外,Axis2中没有其他的进行handler链硬编码的地方。因此,所有的那些配置也在phase order元素中完成。完整的代码如下:

     

    xml 代码
    1. <phaseOrder type="InFlow">  
    2.           
    3.          <phase name="Transport">  
    4.             <handler name="RequestURIBasedDispatcher"  
    5.                      class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">  
    6.                 <order phase="Transport"/>  
    7.             handler>  
    8.   
    9.             <handler name="SOAPActionBasedDispatcher"  
    10.                      class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher">  
    11.                 <order phase="Transport"/>  
    12.             handler>  
    13.         phase>  
    14.         <phase name="Security"/>  
    15.         <phase name="PreDispatch"/>  
    16.         <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">  
    17.             <handler name="AddressingBasedDispatcher"  
    18.                      class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">  
    19.                 <order phase="Dispatch"/>  
    20.             handler>  
    21.   
    22.             <handler name="SOAPMessageBodyBasedDispatcher"  
    23.                      class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher">  
    24.                 <order phase="Dispatch"/>  
    25.             handler>  
    26.   
    27.             <handler name="InstanceDispatcher"  
    28.                      class="org.apache.axis2.engine.InstanceDispatcher">  
    29.                 <order phase="Dispatch"/>  
    30.             handler>  
    31.         phase>  
    32.           
    33.           
    34.         <phase name="OperationInPhase"/>  
    35.     phaseOrder>  
    36.     <phaseOrder type="OutFlow">  
    37.           
    38.         <phase name="OperationOutPhase"/>  
    39.           
    40.           
    41.         <phase name="MessageOut"/>  
    42.         <phase name="PolicyDetermination"/>  
    43.     phaseOrder>  
    44.     <phaseOrder type="InFaultFlow">  
    45.         <phase name="PreDispatch"/>  
    46.         <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">  
    47.             <handler name="RequestURIBasedDispatcher"  
    48.                      class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">  
    49.                 <order phase="Dispatch"/>  
    50.             handler>  
    51.   
    52.             <handler name="SOAPActionBasedDispatcher"  
    53.                      class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher">  
    54.                 <order phase="Dispatch"/>  
    55.             handler>  
    56.   
    57.             <handler name="AddressingBasedDispatcher"  
    58.                      class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">  
    59.                 <order phase="Dispatch"/>  
    60.             handler>  
    61.   
    62.             <handler name="SOAPMessageBodyBasedDispatcher"  
    63.                      class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher">  
    64.                 <order phase="Dispatch"/>  
    65.             handler>  
    66.             <handler name="InstanceDispatcher"  
    67.                      class="org.apache.axis2.engine.InstanceDispatcher">  
    68.                 <order phase="Dispatch"/>  
    69.             handler>  
    70.         phase>  
    71.           
    72.         <phase name="OperationInFaultPhase"/>  
    73.     phaseOrder>  
    74.     <phaseOrder type="OutFaultFlow">  
    75.           
    76.         <phase name="OperationOutFaultPhase"/>  
    77.         <phase name="PolicyDetermination"/>  
    78.         <phase name="MessageOut"/>  
    79.     phaseOrder>  

    type:代表流的类型的属性,只能是以下几种:

  • InFlow
  • OutFlow
  • InFaultFlow
  • OutFaultFlow

    除此之外,允许在phaseOrder内出现的元素是phase元素。phase元素代表了执行链中可用的phases。在phaseOrder中指明phase的方法如下:

    xml 代码
    1. <phase name="Transport"/>  

    name:phase的名字。

     改变phaseOrder的时候,必须牢记一些事情:

    如果phaseOrder的类型是InFlow和InFaultFlow

    1.  所有在"Dispatch"阶段(phase)上的阶段,包括它本身,都是全局阶段(Global Phase)。你可以在这里添加任意数量的新阶段,这些阶段都可以被认为是全局的。

    2.在这两个phaseOrder类型中,添加在Dispatch之后的阶段,被认为是操作阶段(Operation Phase)。

    如果phaseOrder类型是OutFlow和OutFaultFlow

    1.所有在"MessageOut"阶段(phase)下的阶段,包括它本身,都是全局阶段(Global Phase)。你可以根据需求添加任意新的阶段。

    2.添加在MessageOut阶段之前的阶段被认为是操作阶段。

    注意:如果你认真观者默认的axis2.xml,你讲可以明确得发现这些。


    Module References

    如果你想要在系统范围内启用一个模块,你可以通过在axis2.xml文件中增加一个顶级模块元素来实现,例如:

    xml 代码
    1. <module ref="addressing" />  

    ref:将要被启用的模块的名字,系统范围。



    Listeners(Observers):在Axis2中,AxisConfiguration是可被监听的,因此你可以把监听器注册进去。当AxisConfiguration发生改变时,监听器会自动得被通知到。就现在的实现而言,监听器会被通知到下述事件:

    Deploying a service

    Removing a service

    Activate/Inactivate Service

    Module deploy

    Module Remove

    注册监听器对附加的功能非常有用,例如RSS种子的生成,它将向订阅者提供服务信息。下面是注册监听器的正确方法:

    xml 代码
    1. <listener class="org.apache.axis2.ObserverIMPL">  
    2.     <parameter name="RSS_URL" >http://127.0.0.1/rssparameter>  
    3. listener>  

    class:代表监听器的实现类,需要注意该实现类必须实现AxisObserver接口,并且必须在classpath中。


    服务配置(Service Configuration)

    书写services.xml:服务的描述使用services.xml指明。每个服务.aar文件都需要一个services.xml文件以便成为有效的服务,并且这个文件应该放置在META-INF目录下。一个非常简单的services.xml如下:

    xml 代码
    1. <service name="name of the service" scope="name of the scope" class="full qualifide name the service lifecycle class"   targetNamespace="target namespase for the service">  
    2.     <description> The description of the service  description>     
    3.   
    4.     <transports>    
    5.        <transport>HTTPtransport>  
    6.     transports>  
    7.        
    8.     <schema schemaNamespace="schema namespace"/>    
    9.         
    10.     <messageReceivers>  
    11.             <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"  
    12.                              class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>  
    13.     messageReceivers>  
    14.         
    15.      <parameter name="ServiceClass" locked="xsd:false">org.apache.axis2.sample.echo.EchoImplparameter>  
    16.        
    17.     <operation name="echoString" mep="operation MEP">    
    18.         <actionMapping>Mapping to actionactionMapping>  
    19.         <module ref=" a module name "/>  
    20.         <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>  
    21.     operation>  
    22.   service>  

    name:服务的名字将会是.aar文件的名字,如果该文件中只包含一个服务。或者,将是此name属性指定的名字。

    scope:(可选属性)说明部署的服务的运行时信息在什么时间段是有效的。该范围有几种类型,"Application","SOAPSession","TransportSession","Request",默认值是"Request"。

    class:(可选属性)服务生命周期实现类的全名。服务生命周期类可以在系统启动和关闭是做一些任务。

    targetNameSpace:(可选属性)服务的命名空间。这个值将在生成WSDL时用到。如果不指定,这个值将会根据服务实现类的包名生成。

    description:(可选)如果你想通过Axis2 web-admin模块显示关于service的描述,可以使用该标签。

    transports:(可选)服务将被发布成什么传输方式。如果transport标签没有出现,那么服务将会以系统中支持的所有传输协议发布。transport子元素指明传输前缀(也就是axis2.xml指定的传输的名字)。

    parameters:services.xml可以包含任意数量的顶级parameters,所有的指定的parameters将会转换成相应的AxisService中的服务属性。services.xml中有一个强制性参数叫做ServiceClass指定java类,该java类执行上面的转换,这个类由MessageReceiver装载。

    operations:如果服务实现类是java,该服务中所有的公用方法都会被公开。如果用户想覆盖它,就需要使用"operations"标签。在一个非java环境或者没有服务类的情况下,用户想发布的所有方法都必须在services.xml中指定。例如:

    xml 代码
    1. <operation name="echoString">  
    2.     <module ref=" a module name "/>  
    3.     <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>  
    4. operation>  

    name是唯一必须的属性,它代表将被发布的操作的名字。操作可以包含模块指针也可以包括任何数量的参数。最有趣的是你可以为每个操作注册客户消息接收器。从而,注册的消息接收器将成为相应的操作的消息接收器。如果你不指定消息接收器,那么默认的消息接收器将执行操作。


    模块配置(Module Configuration)

    书写module.xml

    模块的描述使用module.xml描述。每个mar文件需要module.xml文件以便成为有效的模块,并且,这个文件需要放在模块的META-INF文件夹下。下面是一个非常简单的module.xml文件。

    xml 代码
    1. <module class="org.apache.module.Module1Impl">  
    2.     <InFlow>  
    3.         .   
    4.         .   
    5.     InFlow>  
    6.     <OutFlow>  
    7.         .   
    8.         .   
    9.     OutFlow>  
    10.   
    11.     <OutFaultFlow>  
    12.         .      
    13.         .   
    14.     OutFaultFlow>  
    15.   
    16.     <InFaultFlow>  
    17.         .            
    18.         .   
    19.     InFaultFlow>  
    20.   
    21.     <operation name="creatSeq" mep="MEP_URI_IN_OUT">  
    22.         <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>  
    23.         <parameter name="para1" locked="xsd:true">10parameter>  
    24.     operation>  
    25. module>  

    class:(可选参数)说明模块的实现类,一个模块可以包含实现类,也可以不包含实现类,这是因为模块也可以是handler的集合。如果一个模块包含了实现了org.apache.axis2.modules.Module接口的实现类,那么在部署时,它的init()方法将会被调用。

    parameter:一个模块可以包含任意数量的参数,所有在module.xml中列出来的参数将被转换成这个module的相应的AxisModule。

    flow:在模块中定义handlers必须定义在flows当中。总共有4种flows的类型。

    你可以在一个flow当中添加任意数量的handlers。当启动时,那些handlers将会在相应的链中。

    (原文:You can add any number of handlers into a flow, and those handlers will be available in the corresponding chains at runtime, when they are engaged.)

    InFlow

    OutFlow

    InFaultFlow

    OutFaultFlow

    operations:如果一个模块想在它在某个服务中启动时增加一个操作的话,可以通过在module.xml中增加一个operation标签。这里声明操作的方法与在services.xml中声明操作的方法相同。

    handler:handler元素由必须的和可选的属性组成。定义一个handler的方法如下:

    xml 代码
    1. <handler name="handler1" class="handlerClass ">  
    2.             <order phase="userphase1" />  
    3.  handler>  

    必须的属性:

    name:handler的名字。

    class:handler的实现类。

    phase:handler在执行链中应该所处的阶段的名字。

    可选的属性:

    phaseLast:说明handler是phase中的最后一个。

    phaseFirst:说明handler是phase中的第一个。

    before:说明当前handler应该在被before标识的handler之前被触发。

    after:说明当前handler应该在被after标识的handler之后被触发。

  • 本文转载自:http://blog.csdn.net/yuwenruli/article/details/6670417

    共有 人打赏支持
    abcijkxyz
    粉丝 61
    博文 6195
    码字总数 1876
    作品 0
    深圳
    项目经理
    Android调用Axis、Axis2、Cxf发布的web service

    在Android中调用axis2发布web service过程中一直报http500错误,axis2 web service是用eclipse插件生成的,发现直接打包成war包或直接在eclipse运行,Android调用的时候会报错,一定要打包成...

    yuewawa ⋅ 05/04 ⋅ 0

    秀下我的mysql客户端配置

    [client]port = 3306socket = /tmp/mysql.sock[mysql]prompt="(\u:db1@yejr.com:R:m:\s)[\d]> "pager="less -i -n -S"tee="/tmp/query.log"no-auto-rehash 登录mysql后,将有以下提示: mysq......

    日久不生情 ⋅ 2017/11/16 ⋅ 0

    部署 Tomcat 单机多实例工具 - tomcat-many-instance

    tomcat-many-instance 是一个部署 Tomcat 单机多实例工具,内涵脚本。 使用说明 > * 直接下载tomcat文件夹 放到自己服务器指定目录即可> * setEnv.sh无用 可以删除,把instance.sh 引入的位置...

    匿名 ⋅ 01/28 ⋅ 0

    javascript学习之 function类型 (27)——function类型 内部属性

    1、arguments arguments 属性:指向一个类似数组 但不是数组的对象,存储的是实际传递给函数的参数,而不局限于函数声明所定义的参数列表 示例代码:

    SundayAaron ⋅ 2017/02/07 ⋅ 0

    axis2开发webservice(1)

    开发webservice之前要先看一眼什么是webservice,并且了解一下webservice的概念。 SOAP SOAP(Simple Object Access Protocol),关于SOAP教程:http://www.w3school.com.cn/soap/index.asp l...

    1880106122065705 ⋅ 2010/10/18 ⋅ 0

    axis2 如何给soapenv:Envelope 添加自定义的命名空间

    最近做第三方接口,服务端需要给soapenv:Envelope添加一个自定义命名空间,请问该如何实现 未添加 达到的效果

    餎Cmc ⋅ 03/06 ⋅ 0

    MATLAB感悟(1)--数据切割与插值拟合

    目的描述 笔者拿到的C题其实质是一道大数据分析的题目,需要通过已经给出的数据推测出各种东西,但是给出的数据的参数种类很多,需要自行选择,其中个数的考究就留给大家自己去琢磨。 拿到选...

    T-newcomer ⋅ 02/28 ⋅ 0

    axis2 webservice实现

    1.官方下载地址:http://axis.apache.org/axis2/java/core/download.html 官方文档:http://ws.apache.org/axis2/1_0/userguide.html axis2 文档翻译:http://blog.csdn.net/tuwen/article/......

    orec ⋅ 2016/12/06 ⋅ 0

    TCP协议图文秒懂

    本文将简单介绍tcp协议的基本内容,主要包括一下四部分:   • tcp概述   • TCP可靠数据传输   • TCP流量控制   • TCP连接管理   TCP概述   • tcp是一个点对点端到端的传输协...

    ⋅ 02/06 ⋅ 0

    Java Web 服务: 比较 Metro 与 Axis2 性能

    Metro Web 服务堆栈是基于 JAXB 2.x 数据绑定和 JAX-WS 2.x Web 服务标准的参考实现,但它使用额外的组件来提供由 JAX-WS 定义的基本支持以外的特性。WS-Security 与其他 SOAP 扩展技术由 We...

    红薯 ⋅ 2010/03/10 ⋅ 0

    没有更多内容

    加载失败,请刷新页面

    加载更多

    下一页

    Greys Java在线问题诊断工具

    Greys是一个JVM进程执行过程中的异常诊断工具。 在不中断程序执行的情况下轻松完成JVM相关问题排查工作 目标群体 有时候突然一个问题反馈上来,需要入参才能完成定位,但恰恰没有任何日志。回...

    素雷 ⋅ 24分钟前 ⋅ 0

    git从远程仓库拉取代码的常用指令

    一种(比较麻烦的)拉代码的方法 git clone //克隆代码库,与远程代码库的主干建立连接,如果主干已经在就不用再clone啦,克隆路径为当前路径下的新创建的文件夹 git checkout -b //本地建立...

    Helios51 ⋅ 38分钟前 ⋅ 0

    005. 深入JVM学习—Java堆内存参数调整

    1. JVM整体内存调整图解(调优关键) 实际上每一块子内存区域都会存在一部分可变伸缩区域,其基本流程:如果内存空间不足,则在可变的范围之内扩大内存空间,当一段时间之后,内存空间不紧张...

    影狼 ⋅ 43分钟前 ⋅ 0

    内存障碍: 软件黑客的硬件视图

    此文为笔者近日有幸看到的一则关于计算机底层内存障碍的学术论文,并翻译(机译)而来[自认为翻译的还行],若读者想要英文原版的论文话,给我留言,我发给你。 内存障碍: 软件黑客的硬件视图...

    Romane ⋅ 今天 ⋅ 0

    SpringCloud 微服务 (七) 服务通信 Feign

    壹 继续第(六)篇RestTemplate篇 做到现在,本机上已经有注册中心: eureka, 服务:client、order、product 继续在order中实现通信向product服务,使用Feign方式 下面记录学习和遇到的问题 贰 or...

    ___大侠 ⋅ 今天 ⋅ 0

    gitee、github上issue标签方案

    目录 [TOC] issue生命周期 st=>start: 开始e=>end: 结束op0=>operation: 新建issueop1=>operation: 评审issueop2=>operation: 任务负责人执行任务cond1=>condition: 是否通过?op3=>o......

    lovewinner ⋅ 今天 ⋅ 0

    浅谈mysql的索引设计原则以及常见索引的区别

    索引定义:是一个单独的,存储在磁盘上的数据库结构,其包含着对数据表里所有记录的引用指针. 数据库索引的设计原则: 为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索...

    屌丝男神 ⋅ 今天 ⋅ 0

    String,StringBuilder,StringBuffer三者的区别

    这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。 首先说运行速度,或者说是, 1.执行速度 在这方面运行速度快慢为:StringBuilder(线程不安全,可变) > StringBuffer...

    时刻在奔跑 ⋅ 今天 ⋅ 0

    java以太坊开发 - web3j使用钱包进行转账

    首先载入钱包,然后利用账户凭证操作受控交易Transfer进行转账: Web3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/Credentials credentials = Wallet......

    以太坊教程 ⋅ 今天 ⋅ 0

    Oracle全文检索配置与实践

    Oracle全文检索配置与实践

    微小宝 ⋅ 今天 ⋅ 0

    没有更多内容

    加载失败,请刷新页面

    加载更多

    下一页

    返回顶部
    顶部