加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

axis2配置说明

发布时间:2020-12-17 01:09:34 所属栏目:安全 来源:网络整理
导读:???? axis2 有三种配置文件 用来配置系统.第一个是用来配置整个系统(全局配置)--axis2.xml.第二个是配置一个服务(服务配置),第三个是配置一个module . ??? 1:全局配置----axis2.xml ?????????所有axis2启动时需要的配置都在包括在axis2.xml文件中.在这个文件
???? axis2 有三种配置文件 用来配置系统.第一个是用来配置整个系统(全局配置)--axis2.xml.第二个是配置一个服务(服务配置),第三个是配置一个module .
??? 1:全局配置----axis2.xml
?????????所有axis2启动时需要的配置都在包括在axis2.xml文件中.在这个文件中,我们可以看到有6个顶级节点,列表如下:
????????
  • Parameter
  • Transport Receiver
  • Transport Sender
  • Phase Order
  • Module References
  • Listeners (Observers)

    Parameter
    ????? 这个节点只有一个name属性,和一个value值.每个顶级的parameter节点定义的值都会被写到AxisConfiguration 对象的属性里.因此在系统运行时,我们可以通过AxisConfiguration对象来获得在axis2.xml中配置的顶级parameter节点的值.配置一个parameter的正确方法 如下所示:

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

    Transport Receiver
    ?????
    <transportReceiver name="http"??????????????????????????????????????????????????????????????????????????????????????????? class="org.apache.axis2.transport.http.SimpleHTTPServer">
    ??????? <parameter name="port" >6060</parameter>
    </transportReceiver>
    ???? transpaortReceiver元素的name属性,代表了数据传输的名字,可以是 "http,tcp,smtp,commonshttp stc "??,当系统启动的时候,或者在客户端设置transport的时候,就可以使用在这里命名的transport,来装载相应的transport.
    ??? class属性 描述了实际的java类,这个类必须扩展了transport接口.任何transport都可以有0个或者任意多个参数,如果设置了参数,那么这些参数可以被相应的transpaortReceiver 获得.

    ???? Transport Senders
    ?????????和Transport Receiver一样,它也是注册倒系统里,在以后运行时,用来发送消息.
    ?<transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
    ??????? <parameter name="PROTOCOL" locked="xsd:false">HTTP/1.0</parameter>
    </transportSender>
    ??? 这个配置段的属性解释和Transport Receiver类似,就不做介绍了.

    Phase Order
    ??? 使用 phase order元素,具体描述在执行链中必须被执行的步骤顺序.
    <phaSEOrder type="inflow">
    ?????????<phase name="Transport">
    ??????????????????????? <handler name="RequestURIBasedDispatcher"
    ???????????????????? class="org.apache.axis2.engine.RequestURIBasedDispatcher">
    ?????????????????????????<order phase="Dispatch"/>
    ??????????????????</handler>
    ??????????????????<handler name="SOAPActionBasedDispatcher"
    ???????????????????? class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
    ?????????????????????????<order phase="Dispatch"/>
    ???????????????????? </handler>
    ??????? </phase>??????
    ????? ?? .
    ???????? .
    </phaSEOrder>?

    令人兴奋的是,你可以在这里增加自己的handler,而且在axis2(任何axis版本)中,都没有handler 链的硬编码框架,也就是说不需要扩展或者继承axis2的什么接口或者类.
    具体例子可以看axis2.xml文件.
    type 属性 必须是下面中的一种:

  • inflow
  • outflow
  • INfaultflow
  • Outfaultflow

    在phaSEOrder节点里第一级子节点只允许有phase元素.<phase name="Transport"/>
    前面已经说了,我们可以改变phaSEOrder,可以增加自己的phase 和handler,但是必须注意:在axis2的4个 flows里面都有 system pre-defined 的phases,我们不可以改变他们的顺序,你可以在他们的后面增加自己的phase

    Module References
    如果你想使用一个模块系统,那么你可以在axis2.xml中增加一个顶级的module节点.
    <module ref="addressing"/>

    Listeners (Observers)
    ?axis2中,AxisConfiguration这个类是采用的观察者模式设计的,所以你可以向类中注册自己的观察者类.当AxisConfiguration类发生改变的时候,你的类会被自动调用 目前当以下事件发生时,观察类就会被触发:
    ?

  • Deploying a Service
  • Removing a service
  • Activate/Inactivate Service
  • Module deploy
  • Module remove

    注册观察者是非常有用的,比如,rss更新的时候,你可以通知订阅者等等.例如:
    ? <listener class="org.apache.axis2.ObserverIMPL">
    ????? <parameter name="RSS_URL" >http://127.0.0.1/rss</parameter>
    ? </listener>
    ? class属性指定的类,必须扩展AxisObserver 这个接口,而且存在于classph中.
    系统配置就这么多了.
    太累了,休息一会,以后再写剩下的2中配置文件..

    2 服务配置 service.xml ??? <service name="name of the service" scope="name of the scope" targetNamespace="target namespase for the service"> ??? <description> The description of the service? </description>? ??? <transports> ?????? <transport>HTTP</transport> ??? </transports> ??? ??? <schema schemaNamespace="schema namespace"/> ???? ??? <messageReceivers> ??????????? <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" ???????????????????????????? class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> ??? </messageReceivers> ???? ???? <parameter name="ServiceClass"???? locked="xsd:false">org.apache.axis2.sample.echo.EchoImpl</parameter> ??? ??? <operation name="echoString" mep="operation MEP"> ??????? <actionMapping>Mapping to action</actionMapping> ??????? <module ref=" a module name "/> ??????? <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/> ??? </operation> ? </service> 如果.aar里面只有一个service那么.aar包的名字就是发布的webservice名字,如果有多个service,那么在这里service元素索指定的那么属性值就表示webservice的名字. scope属性指明了webservice发布后的作用范围,有"Application","SOAPSession","TransportSession","Request"; targetNamingSpace? :服务的名字空间,在生成wsdl时会用到. transport:?? 可选的,字面的意思已经很明显了,不多说了,配置的name就是在axis2.xml文件中指明的transport parameter属性,一个service.xml可以有任意多个顶级节点的parameter节点. parameter里配置的值会被写到AxisService类的属性里,在service.xml文件中至少要有一个parameter 名字是ServiceClass 它的value值指定具体执行服务的java类,这个类会被MessageReciever装载. operation比较简单就是用来指明暴露的方法的.不做介绍了. 剩下module的配置,还没搞懂,先不写了.

  • (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读