今天搞了一天的axis2,遇到了许多问题,但最终还是弄出来个例子。

 于是我决定改用cxf,现把axis2的入门级小例子的过程,整理如下:

一.准备工作

1.首先需要下载axis2的相关jar,到axis的官方网站即可获得开发的依赖包。

下载地址:http://axis.apache.org/axis2/java/core/download.cgi

现在最高的版本是1.6.2。下载bin和war两个文件即可。

2.下载axis2eclipse插件工具,可以帮助我们打包(aar)及其生产客户端调用代码。下载页面:http://axis.apache.org/axis2/java/core/tools/index.html  Service Archive Wizard - Eclipse Plug-in     Code Generator Wizard - Eclipse Plug-in解压后复制到eclipse安装目录的plugin文件夹下,重启eclipse即可。

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;

      勾选Skip WSDL,点击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参数指定了生成的一系列文件保存的根目录,在bin目录下的,stub\src\ws自动生成AxisServiceStub.java和AxisServiceCallbackHandler.java。

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