环境准备
1、本地环境
win7+eclipse(Luna)+jdk1.6+tomcat6
2、下载Axis2相关软件包
3、安装eclipse插件
将如下两个zip文件解压后得到的jar文件放到eclipse安装主目录下的plugins子目录下,并重启eclipse即可。
- axis2-eclipse-codegen-plugin-1.6.2.zip,用来将服务代码生成wsdl文件以及解析将wsdl文件生成客户端代码;
- axis2-eclipse-service-plugin-1.6.2.zip,用来将服务代码打包成后缀名为.aar文件。
安装成功,在新建窗口(Ctrl+N)可以看到如下Axis2 Wizards项:
图1. eclipse新建文件向导对话框
服务端开发
1、部署Axis2
首先,解压axis2-1.6.2-war.zip得到axis2.war,并放到%tomcat%\webapps目录下;
然后,启动tomcat,并访问:http://localhost:8080/axis2
若显示如下页面,则表示axis2 war包部署成功。
2、编写服务端代码
package wstest;
public class MyService {
/**
* Greeting Service
* @return String
*/
public String greeting(String name){
return "Welcome, "+name;
}
}
3、制作aar包
在Eclipse new file wizard菜单(见图1),选择Axis2 Service Archiver,然后点击Next。
接下来,依次填写Class文件位置、Skip WSDL、选择服务依赖的外部jar包(本案例无需外部依赖Jar)、勾选自动生成service xml,然后在如下页面选择该xml所需要定义的服务名、类名等参数:
其中,Service name,填写服务名;Class name,填写服务代码中定义的类全名。
在方法列表中勾选声明的方法,若列表未显示,可以点击Load按钮自动加载。
接下来,填写输出aar文件的路径、名称。
最后,提示:服务压缩包aar文件生成成功。
查看指定文件夹,发现已经生成了myservice.aar文件。
4、发布服务
将myservice.aar文件放到之前部署的axis2应用的WEB-INF\services\目录下,
重启tomcat,即完成了服务发布。发布成功后,页面显示如下:
点击上图的MyService链接(http://localhost:8080/axis2/services/MyService?wsdl),可看到wsdl内容。
至此,即完成了服务端的开发。
客户端开发
1、生成客户端代码
通过Axis2插件,可自动生成客户端代码。
在Eclipse new file wizard菜单(见图1),选择Axis2 Code Generator,然后点击Next。
勾选第一个,从wsdl文件生成java source code。在下图wsdl file location中,输入已经发布成功的服务端webservice地址。
设置代码生成器的可选项,此处默认default即可。
设置代码生成后的路径。勾选第一项,并选择当前eclipse workspace中的工程wsclient(这是提前创建好的一个测试用project)。
点击完成,即开始代码生成过程。
生成完毕后,刷新wsclient工程,可以看到:
配置buildpath,之前下载的axis2-1.6.2-bin.zip文件中lib目录下的所有Jar包,都添加到class path中。配置完毕后,工程即编译成功。
2、编写测试代码调用web服务
package test;
import java.rmi.RemoteException;
import wstest.*;
public class TestWS {
public static void main(String[] args) throws RemoteException {
MyService ws = new MyServiceStub();
Greeting greeting = new Greeting();
greeting.setName("Simon");
//调用WebService
GreetingResponse greetingResponse = ws.greeting(greeting);
System.out.println(greetingResponse.get_return());
}
}
输出内容:
Welcome, Simon
至此,WebService客户端调用成功。
问题记录
1. eclipse编译时jdk版本问题
报错信息:
Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
原因:jdk版本问题,本地环境原来为win7 + jdk1.7,与tomcat运行时默认使用的jdk版本1.6不一致。
解决办法:修改项目java compiler的方法:在项目点右键->选择Perperties->在出现的菜单中选择Java Compiler->最上面选中Enable project Specific setting->然后将jdk改为jdk1.6即可。
参考文档
Apache axis2 + Eclipse 开发 WebService