Axis2.x WebService开发

来源:互联网 发布:图灵学院 java 下载 编辑:程序博客网 时间:2024/06/07 00:30

                                       Axis2.x WebService开发

    最近因为公司项目的需要,需要做接口让其它公司开发的系统来调用我们的接口获取数据,所以要开发接口,但是以前有人开发过接口通过Axis2.x 开发过接口,所以我必须也要用这种方式来开发接口,这样才能把接口发布在一起。

    webservice开发有很多种方式,我这只是其中的一种开发方式,我环境搭建起来就花了好久的时间,在这里我会写出来,希望你们在我之后不会遇到这么多问题。

   

一、   准备工作

1、开发准备

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

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

现在最高的版本是1.5.4的

然后你需要下载官方提供的axis的eclipse插件工具,可以帮助我们打包(aar)及其生产客户端调用代码。

下载页面:http://axis.apache.org/axis2/java/core/tools/index.html

Service Archive Wizard - Eclipse Plug-in

Code Generator Wizard - Eclipse Plug-in

2、安装eclipse插件

      我是用meclipse 8.5和eclipse插件org.apache.axis2.eclipse.service.plugin_1.6.2.jar,org.apache.axis2.eclipse.codegen.plugin_1.6.2.jar

    这两个jar包直接放在myeclipse的安装目录MyEclipse8.5\dropins里面,并且要加上javax.xml.bind_2.1.9.v201005080401.jar,

    javax.xml.stream_1.0.1.v201004272200.jar,javax.xml_1.3.4.v201005080400.jar这几个文件可以自己去MyEclipse8.5\Common\plugins报里面去找

    把这五个jar包一起放在myeclipse安装目录MyEclipse8.5\dropins里面,插件就可以使用了。

    以前用1.5.2,1.3版本的插件要么显示不出来,要么到以后操作的时候就报错。

    

如果你的eclipse插件安装成功后,会看到如下效果:

3、分析axis2-bin文件目录结构

下载下来的axis2的依赖库,其中有一个axis2-1.5.3-bin.zip的库文件,目录结构如下:

bin文件夹是axis2的常用工具,其中有将wsdl文件转换成客户端调用的wsdl2java工具及将java转换成wsdl文件的工具

(这个文件很重要的,在以后插件生成客户端代码出错的情况下,可以用这里面得命令去生成,不会报错)

conf是axis2的配置文件

lib运行所要的依赖库

repository是发布过的axis服务和文件

sample是示例

webapp是web文件和jsp页面等

4、我们需要将下载下来的axis2-1.5.3-war.zip中的axis2.war这个文件放在我们的tomcat目录下,启动tomcat就会把war文件转成一个可以跑起来的axis2的项目。

Tomcat启动后,在浏览器中输入:http://localhost:8080/axis2/你可以看到

下面用axis2的工具生成aar文件,然后完成发布WebService。

1、 点击工作空间WorkSpace,右键New选择Other

2、 然后点击Browser选择你当前的工程的classes目录

点击Next

3、 没有WSDL,选择第一项,点击Next,然后再Next一次

 

4. 不用设置service.xml,直接Next

 

5.最关键一步,填写WebService的Name,设置class路径点击Load你就可以看到当前class的方法

 

6、 设置aar文件的名称和保持的目录

点击Finish你可以看到提示successfully的提示。

7、刷新当前工程可以看到ManangerUserService.aar文件了

8.下面我们在浏览器中访问这个地址:http://localhost:8080/axis2/

点击Admin这个链接,可以看到要输入用户名和密码,用户名和密码在

Tomcat_Home\webapps\axis2\WEB-INF\conf下的axis2.xml中可以找到

<parameter name="userName">admin</parameter>

<parameter name="password">axis2</parameter>

9、 输入密码进入管理页面后可以看到

下面介绍下上面常用的功能

Upload Service当然是上传aar的文件,完成发布WebService的工具了

Available Service是查看当前发布的Service详细信息

Available Service Groups是Service组

Global Chains是可以用的全局的Chain

Operation Specific Chains是某个具体操作的chain

Deactivate Service 是取消某个Service

Activate Service 是将取消发布的Service再发布出去

Edit Parameters是修改WebService类的参数

 

10、 我们这里用Upload Service这个工具,然后选择我们刚才用axis2的工具生成aar文件。

其实这一步我们可以直接将ManagerUserService.aar文件copy到

tomcat-home\webapps\axis2\WEB-INF\services这个目录下。

11、 然后点击Available Service就可以看到ManagerUserService这个Service了

 

现在我们要用axis2的工具生成wsdl文件

        1、点击WorkSpace,右键New选择Other。然后选择客户端代码生成工具

    2、点击Next,你可以看到让你选择wsdl。选择第一个,然后点击Next

上面是根据Java class代码生成wsdl文件

    3、填写你的WebService的classpath,然后选择你当前class所在工程的class目录

然后点击Add Folder选择你的工程的classes 或 bin目录,也就是你填写的class所在的目录,然后点击Test 测试是否正确。

点击Next继续下一步

4、可以看到即将发布的WebService名称和命名空间

5、继续Next,选择wsdl文件保存目录

这样services.wsdl文件就生成了

控制台wsdl生成客户端代码

   用axis2的插件生成的客户端代码总是报错,可能是版本跟axis2不一致,所以我直接用wsdl2java.bat生成客户端调用

   代码


  控制台用wsdl转JAVA方法:
 Axis2提供了一个wsdl2java.bat命令可以根据WSDL文件自动产生调用WebService的代码。
  wsdl2java.bat命令可以在<Axis2安装目录>"bin目录中找到
在Windows控制台输出如下的命令行来生成调用WebService的代码:
你的axis2的目录\bin\wsdl2java -uri
http://localhost:8080/axis2/services/SimpleService?wsdl -p client

 

黑窗口控制台:
C:\Users\admin>D/
D:\>cd D:\axis2-1.6.1\bin
D:\axis2-1.6.1\bin>wsdl2java -uri (写上要访问的webservices地址)/回车

-s -o stub
    在执行完上面的命令后,读者就会发现在当前目录下多了个stub目录,在."stub"src"client目录可以找到一个SimpleServiceStub.java文件。
参数说明:
-url 指定了wsdl文件的路径,可以是本地路径,也可以是网络路径。
-p   指定了生成的Java类的包名,
-o   指定了生成的一系列文件保存的根目录。
-ss  生成服务器端代码(如skeletons)
-sd  生成服务器描述文件(services.xml),要在 有-ss参数的时候才有效
-scn 用已有的代码代替skeletons

 

调用代码

public class RealFrDataService {

 public static void main(String[] args) {
    String target = "
http://localhost:8080/axis2/services/RealFrDataService";
   
   try{
    RealFrDataServiceStub stub = new RealFrDataServiceStub(target);
      RealFrDataServiceStub.GetStatisticsDataByWgCode object = new RealFrDataServiceStub.GetStatisticsDataByWgCode();
    object.setCode("110108012023");
    RealFrDataServiceStub.GetStatisticsDataByWgCodeResponse response = stub.getStatisticsDataByWgCode(object);
    System.out.println(response.get_return());
     }
   catch(Exception ex){
    ex.printStackTrace();
   }

  }
}