Axis2: services.xml的MEP(信息交换模式)配置

来源:互联网 发布:医院网站源码 编辑:程序博客网 时间:2024/05/20 04:49

Axis2: services.xml的MEP(信息交换模式)配置

=============================

在axis2中使用不同的MEP来处理不同的信息交换格式。

w3提供了8个


全局配置:
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</messageReceivers>


局部配置:
<operation name="getGreeting" mep="http://www.w3.org/2006/01/wsdl/in-out">
<messagerReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>


如果配置不正确,会抛出异常。比如,加了一个没有返回值的方法,如果没有加对应的MEP,则抛出异常。
也可使用operation设置相应的MEP:
<Option name="log" mep="http://www.w3.org/2006/01/wsdl/in-out">
    <messagerReceiver class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />

</operation>


例如:

<service name="SimpleService1">
<parameter name="ServiceClass">
service.SimpleService
</parameter>

<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</messageReceivers>

</service>


如何用services.xml的方式发布多个web service?
如果我们发布多个webservice,就需要在services.xml文件配置多个webservice。
配置多个webservice要使用<serviceGroup>元素,一个services.xml元数据放到META-INF目录中,将service和META-INF中只能有一个<serviceGroup>元素,<serviceGroup>元素中可以有0个或者多个<service元素,每个<service>元素表示一个。


webservice:


<serviceGroup>
<service name="service1">.....</service>
<service name="service2">.....</service>
......
</serviceGroup>


例如:
<serviceGroup>
<service name="MyService">
<parameter name="ServiceClass">
service.SimpleService
</parameter>


<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</messageReceivers>
</service>


<service name="SimpleService1">
<parameter name="ServiceClass">
service.SimpleService
</parameter>


<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</messageReceivers>
</service>
</serviceGroup>




Restful WebService(1);
Axis2默认下同时支持以SOAP和Restful两种方式调用Web Service,
SOAP方式通过SOAP消息来传递相应的数据。
而Restful的方式是通过HTTP GET请求直接访问的。
因此,Restful方式不支持复制的数据类型,例如二进制文件
在Axis2.xml中可以开启或者关闭Restful:
<parameter name="disableREST" locked="false">
false</parameter>
将<parameter>元素的值改成true就可以关闭Restful.




Restful WebService(2);
Java也可以通过HTTP POST方式通过Restful方式访问webservice,
。但必须在Stub类中设置相应的属性。




使用Eclipse开发WebService
1.新建一个java project;
2.新建类;
3.然后新建一个META-INF目录;
4.在META-INF目录中新建一个services.xml
5.导出类和META-INF目录成jar(arr),发布到tomcat即可。


Restful WebService,使用SOAP消息传输数据会有大量数据冗余,
如果想节省带宽,可以用Restful WebService,但不能传
比较复杂的数据的类型。


0 0