今天搞了一天的axis2,遇到了许多问题,但最终还是弄出来个例子。
于是我决定改用cxf,现把axis2的入门级小例子的过程,整理如下:
一.准备工作
1.首先需要下载axis2的相关jar包,到axis的官方网站即可获得开发的依赖包。
下载地址:http://axis.apache.org/axis2/java/core/download.cgi
现在最高的版本是1.6.2。下载bin和war两个文件即可。
2.下载axis2的eclipse插件工具,可以帮助我们打包(aar)及其生产客户端调用代码。下载页面:http://axis.apache.org/axis2/java/core/tools/index.html
3.把axis2-1.6.2-war.zip下的axis2.war这个文件放在我们的tomcat目录下,启动tomcat就会把war文件转成一个可以跑起来的axis2的项目。Tomcat启动后,在浏览器中输入:http://localhost:8080/axis2/。如果看到welcome,即表示发布成功。
二.webService实例
1. 新建Java工程 Axis2Service1
2. 在edu.ouc.wy.ws包下,新建TestWs.java,内容如下:
public String getName(String name) {
return "hello: "+name;
}
3. arr部署方式,这里介绍一个简单的方法:
IDE中选择New->other->Axis2 Service Archiver,点击Next;
Class File Location:选择D:\workspace\Axis2Service1\bin目录,点击Next;
Service Archiver 选择jar位置,如果没有jar包就直接点击Next;
勾选Generate the service xml automatically 自动生成XML file文件,点击Next;
service name,输入:AxisService, 然后在class name 中填写要发布的类(包路径),edu.ouc.wy.ws.TestWs点击load。 勾选 Search declared methods only。点击next;
output File location,输入:E:\ ; output File Name,输入artiver文件的名称 AxisService。点击finish。
提示 Service Archvie generated successfully! 注册表明,生成成功。
4. 发布Service
在E盘下,能够找到AxisService.aar,复制到%TOMCAT-HOME%/webapps/axis2/WEB-INF/services下。
重启tomcat,访问http://localhost:8080/axis2/services/AxisService?wsdl就能看到我们的服务
5. Axis2调用WebService
cmd命令行,切换到Axis2安装文件的bin目录,输入如下命令wsdl2java -uri http://localhost:8080/axis2/services/AxisService?wsdl -p edu.ouc.wy.ws -s -o stub。其中,-p参数指定了生成的Java类的包名 -o参数指定了生成的一系列文件保存的根目录,
6. 客户端调用
新建Java工程Axis2Client,新建\Axis2Client\lib文件夹,将%AXIS2_HOME%\lib\ 下的jar包复制到\Axis2Client\lib,并加入工程引用中。
将AxisServiceStub.java和AxisServiceCallbackHandler.java两个文件,复制到 edu\ouc\wy\ws包下,注意包路径要与第五步的包路径一样。
新建Test类,内容如下:
try {
//初始化Sub类
AxisServiceStub stub = new AxisServiceStub();
AxisServiceStub.GetName request = new AxisServiceStub.GetName();
request.setName("ouc-wangyue");
//取得返回值
String name = stub.getName(request).get_return();
System.out.println(name);
} catch (AxisFault e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
运行一下,就可以看到结果啦!hello: ouc-wangyue