天天看点

Eclipse + Axis2 开发 WebService

环境准备

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项:

Eclipse + Axis2 开发 WebService

图1. eclipse新建文件向导对话框

服务端开发

1、部署Axis2

首先,解压axis2-1.6.2-war.zip得到axis2.war,并放到%tomcat%\webapps目录下;

然后,启动tomcat,并访问:http://localhost:8080/axis2

若显示如下页面,则表示axis2 war包部署成功。

Eclipse + Axis2 开发 WebService

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所需要定义的服务名、类名等参数:

Eclipse + Axis2 开发 WebService

其中,Service name,填写服务名;Class name,填写服务代码中定义的类全名。

在方法列表中勾选声明的方法,若列表未显示,可以点击Load按钮自动加载。

接下来,填写输出aar文件的路径、名称。

Eclipse + Axis2 开发 WebService

最后,提示:服务压缩包aar文件生成成功。

Eclipse + Axis2 开发 WebService

查看指定文件夹,发现已经生成了myservice.aar文件。

4、发布服务

将myservice.aar文件放到之前部署的axis2应用的WEB-INF\services\目录下,

Eclipse + Axis2 开发 WebService

重启tomcat,即完成了服务发布。发布成功后,页面显示如下:

Eclipse + Axis2 开发 WebService

点击上图的MyService链接(http://localhost:8080/axis2/services/MyService?wsdl),可看到wsdl内容。

至此,即完成了服务端的开发。

客户端开发

1、生成客户端代码

通过Axis2插件,可自动生成客户端代码。

在Eclipse new file wizard菜单(见图1),选择Axis2 Code Generator,然后点击Next。

Eclipse + Axis2 开发 WebService

勾选第一个,从wsdl文件生成java source code。在下图wsdl file location中,输入已经发布成功的服务端webservice地址。

Eclipse + Axis2 开发 WebService

设置代码生成器的可选项,此处默认default即可。

Eclipse + Axis2 开发 WebService

设置代码生成后的路径。勾选第一项,并选择当前eclipse workspace中的工程wsclient(这是提前创建好的一个测试用project)。

Eclipse + Axis2 开发 WebService

点击完成,即开始代码生成过程。

Eclipse + Axis2 开发 WebService

生成完毕后,刷新wsclient工程,可以看到:

Eclipse + Axis2 开发 WebService

配置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