一个完整的基于Axis2的Web Service服务由以下几部分组成:
1. 服务器端程序
2. services.xml 此文件用于注册服务器端程序中的公有对外方法类型,以及描述信息,典型地,一个services.xml的文档结构如下:
- <service name="HelloWorldService" scope="application">
- <description>Hello World Service</description>
- <operation name="getHelloWorldMs">
- <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" />
- </operation>
- <operation name="setHelloWorldMs">
- <messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver" />
- </operation>
- <operation name="getDownloadConfirm">
- <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" />
- </operation>
- <parameter name="ServiceClass">samples.helloworld.service.axiom.HelloWorldService</parameter>
- </service>
其中的ServiceClass是必须参数,用来指明operation所在的ServiceClass
<parameter name="ServiceClass">samples.helloworld.service.axiom.HelloWorldService</parameter>
其中的messageReceiver类型可以分为2类,如果ServiceClass 中的方法有返回值则messageReceiver 采用IN-OUT模式,如果没有返回值则采用IN模式,相应地其客户端的调用方式也会有所不同。在IN-OUT模式下,采用sendReceive方法将数据发送到服务器段,服务器端在收到信息后将处理后的结果交给sendReceive ;在IN模式下,使用 fireAndForget 方法,调用此方法后,服务器端不会将处理结果返回给客户端
- <operation name="getHelloWorldMs">
- <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" />
- </operation>
- <operation name="setHelloWorldMs">
- <messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver" />
- </operation>
- <operation name="getDownloadConfirm">
- <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" />
- </operation>
3. 一个WSDL文件,该文件是传输过程中数据的Data Structure描述。可以使用Axis2提供的工具java2wsdl自动生成。
通常在定义好一个ServiceClass的框架后,尽管每个业务可能还没有完全实现,但是就已经可以用来直接生成Data Structure描述文件。