历史版本10 :使用services.xml文件发布 返回文档
编辑时间:
内容长度:图片数:目录数:
修改原因:
1. 概述编辑
用Axis2发布WebService,虽然可以将POJO类放在%Tomcat_Home%\webapps\axis2\WEB-INF\pojo目录中直接发布成WebService,这样做不需要进行任何配置,但这些POJO类不能在任何包中。为此,Axis2需用services.xml文件方法方式发布,此方法允许将带包的类发布成WebService。
此方法与POJO发布的不同之处在于要新建services.xml文件,并且需要以.aar文件格式进行发布,下面一个示例介绍实现过程。
2. 示例编辑
2.1 创建类
首先创建一个简单的类,代码如下:
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文件,这个文件需要放在%Tomcat_Home%\webapps\axis2\META-INF目录中,该文件的内容如下:
<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.xml和E:\ws\service\MyService.class。
在windows控制台中进入ws目录,并输入如下的命令生成.aar文件:
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可以获得这个WebService的WSDL内容:
http://localhost:8080/axis2/services/myService?wsdl
已经显示webservice发布成功了。
http://localhost:8080/axis2/services/myService?wsdl
已经显示webservice发布成功了。
在浏览器地址栏中输入如下的URL 来分别测试getGreeting方法:
http://localhost:8080/axis2/services/myService/getGreeting?name=bill
注:路径中的myService是services.xml中service元素的name属性的值。