历史版本1 :使用services.xml文件发布 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

1. 概述编辑

用Axis2发布WebService,虽然可以将POJO类放在axis2\WEB-INF\pojo目录中直接发布成WebService,这样做不需要进行任何配置,但这些POJO类不能在任何包中。为此,Axis2需用services.xml文件方法方式发布,此方法允许将带包的类发布成WebService。
此方法与POJO发布的不同之处在于要新建services.xml文件,并且需要以.aar文件格式进行发布,下面一个示例介绍实现过程。

2. 示例编辑

2.1 创建类
首先创建一个简单的类,代码如下:
HTML/XML代码
package service;  
  
public class MyService  
{  
    public String getGreeting(String name)  
    {  
        return "您好 " + name;  
    }  
    public void update(String data)  
    {  
        System.out.println("<" + data + ">已经更新");  
    }  
}  
2.2 新建services.xml
这种方式和直接放在pojo目录中的POJO类不同,要想将MyService类发布成WebService,需要一个services.xml文件,这个文件需要放在META-INF目录中,该文件的内容如下:
HTML/XML代码
<service name="myService">  
    <description>  
        Web Service例子  
    </description>  
    <parameter name="ServiceClass">  
        service.MyService    
    </parameter>  
    <messageReceivers>  
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"  
            class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />  
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"  
            class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />  
    </messageReceivers>  
</service>  
注:若services.xml文件中包含中文字符,则需要将此xml文件以UTF-8格式进行保存,否则会出现错误。
其中service元素是用于发布WebService,一个service元素只能发布一个WebService类,name属性表示WebService名。description元素表示当前WebService的描述,parameter元素用于设置WebService的参数,在这里用于设置WebService对应的类名。在这里最值得注意的是messageReceivers元素,该元素用于设置处理WebService方法的处理器。例如,getGreeting方法有一个返回值,因此,需要使用可处理输入输出的RPCMessageReceiver类,而update方法没有返回值,因此,需要使用只能处理输入的RPCInOnlyMessageReceiver类。
2.3 打包成.aar文件
.aar文件实际上就是改变了扩展名的.jar文件。在现在建立了两个文件:MyService.java和services.xml,将MyService.java编译,生成MyService.class。services.xml和MyService.class文件的位置分别为:E:\ws\META-INF\services.xmlE:\ws\service\MyService.class
在windows控制台中进入ws目录,并输入如下的命令生成.aar文件:
HTML/XML代码
jar cvf ws.aar .  
在E盘的ws目录下就会生成ws.arr文件。
2.4 发布WebService
将ws.aar文件复制到%Tomcat_Home%\webapps\axis2\WEB-INF\services目录中,启动Tomcat后,就可以调用这个WebService了。
2.5 查看发布的服务
在浏览器地址栏中输入如下的URL 来分别测试getGreeting方法:
http://localhost:8080/axis2/services/myService/getGreeting?name=bill

注:路径中的myService是services.xml中service元素的name属性的值。