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,但不能传 比较复杂的数据的类型。