您的位置:首页 > 编程语言 > Java开发

java axis2 发布服务

2015-12-20 23:38 549 查看
上篇文章里,说到pojo内,class不能有包名,这样的要求,肯定是不符现实开发的。显然,apache也是允许带包的类发布webservice的,不然不是没人用啦。

1.先写一个简单的计算器 带多个方法,带参数,有返回值的

package com.zy.axis2.test;

public class CalculateService {
// 加法
public Double plus(Double x, Double y) {
return x + y;
}

// 减法
public Double minus(Double x, Double y) {
return x - y;
}

// 乘法
public Double multiply(Double x, Double y) {
return x * y;
}

// 除法
public Double divide(Double x, Double y) {
if (y != 0)
return x / y;
else
return -1.0;
}
}


2.编写server.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 服务名称 -->
<service name="CalculateService">
<!-- 服务描述 -->
<description>
算术运算的服务
</description>
<!-- 设置服务类 -->
<parameter name="ServiceClass">
com.zy.axis2.test.CalculateService
</parameter>
<operation name="plus">
<!-- mep 固定写法,class:RPCMessageReceiver(带返回值的处理器) RPCInOnlyMessageReceiver(不带返回值的处理器)-->
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
<operation name="minus">
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
<operation name="multiply">
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
<operation name="divide">
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
</service>


放到meta-inf目录下(直接使用eclipse打包

,然后在打开jar文件,把serverm.xml丢进去),修改jar后缀为aar后缀

我打的名字是server.jar,更改后缀为aar,所以最后是server.aar,Axis2建议使用aar发布WebService,

将server.aar放到<Tomcat安装目录>/webapps/axis2/WEB-INF/services下,访问http://localhost:8080/axis2/services/listServices,

多出了一个CalculateService,说明发布成功。



分别访问
http://localhost:8080/axis2/services/CalculateService/plus?x=1&y=2 http://localhost:8080/axis2/services/CalculateService/divide?x=1&y=2 http://localhost:8080/axis2/services/CalculateService/minus?x=1&y=2 http://localhost:8080/axis2/services/CalculateService/multiply?x=1&y=2
比如



我们要严格遵守参数类型和值,假如访问的参数的错误的,会报错



也可以发布多个WebService,可以使用serviceGroup标签。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: