Axis2 WebService
实现webservice的开源框架有很多,axis是比较常用的一种,它能让你在tomcat上方便的发布webservice,它能帮助你把代码转化成wsdl文件,或者把wsdl文件转化成java代码,下面对axis2作详细说明,我会侧重讲cmd命令行发布和转化,因为最新版axis2的插件和多数eclipse版本不兼容。
一.下载axis2
下载地址:http://axis.apache.org/axis2/java/core/download.cgi
当前最新版本是1.6.1。
下载到本地:
Axis2-1.6.1-bin.zip里有axis2的jar包。
Axis2-1.6.1-docs.zip里有详细的帮助文档。
Axis2-1.6.1-src.zip里是源代码,方便爱学习的同学研究。
Axis2-1.6.1-war.zip里是axis的管理平台,直接扔到tomcat中就能用了。
二.创建项目
PipeService代码如下:
package com.pipe.webservice;
import com.pipe.bean.User;
public class PipeService {
public String sayHello(String name) {
return name + " say: hello";
}
public User getUser(String userName) {
User user = new User();
user.setName(userName);
return user;
}
}
三. 发布WebService
1. 直接拷贝目录结构到tomcat发布
网上帮助:http://axis.apache.org/axis2/java/core/docs/userguide-buildingservices.html#deployrun
直接拷贝如下目录结构到webapps/axis2/WEB-INF/services
Services.xml
<service name="PipeService" >
<description>
Please Type your service description here
</description>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</messageReceivers>
<parameter name="ServiceClass">com.pipe.webservice.PipeService</parameter>
</service>
重启tomcat,成功。
2. 打包aar文件,通过页面upload发布
考虑到给客户发布的话不太方便,故下面把它打成aar包。
在C盘下建文件夹AxisSession,按上文提到的目录结构把class和server.xml放好。
通过cmd进入目录,
打命令:jarcvf pipeservice.aar .(注意最后的句点)
用户名密码admin axis2
同样成功。
四.Java2wsdl
在最外层输全带包名的类名。
java2wsdl -cn com.pipe.webservice.PipeService
成功生成。
五.Wsdl2java
wsdl2java -uri PipeService.wsdl
生成2个文件。
public void downFile(StringfilePath) {
System.out.println(filePath);
StringtargetUrl = "http://localhost:8090/axis2/services/PipeService";
try {
PipeServiceStubps = new PipeServiceStub(targetUrl);
PipeServiceStub.SayHellosayHello = new PipeServiceStub.SayHello();
PipeServiceStub.GetUsergetUser = new PipeServiceStub.GetUser();
sayHello.setName("sam");
SayHelloResponse shr = ps.sayHello(sayHello);
getUser.setUserName("sam");
GetUserResponsegur = ps.getUser(getUser);
Useru = gur.get_return();
System.out.println(shr.get_return());
System.out.println(u.getName());
}catch (AxisFault e) {
e.printStackTrace();
}catch(RemoteException e) {
// TODOAuto-generated catch block
e.printStackTrace();
}