`

Axis2创建webservice 客户端方式 之 ADB 方式

阅读更多

创建的客户端是基于 Axis2创建webservice服务的方式 之 ADB 方式(一) 创建的服务端.

 

相关wsdl文件需要参考上面创建服务端的文章.

 

1. 调用wsdl命令创建客户端类

 

到TestAdb.wsdl所在的resources目录下面,执行下面的命令:

 

%AXIS2_HOME%\bin\wsdl2java -uri TestAdb.wsdl -p test.adb.clients -d adb -s -o ./clientoutput

 

-p test.adb.clients 表示将创建的代码放到test.adb.clients包里面

-d adb 表示使用adb的方式绑定

-s 表示创建同步(阻塞方式)代码

-o ./clientoutput 表示创建代码的存放目录

 

命令执行完毕后,生成文件及其目录结构如下,

可见,生成的java文件,已经按包名组织好了目录结构放到src下了,同时还生成了一个build.xml文件.

wsdl2java工具想的还是很周到的.

 

上面的命令其实只生成了一个TestAdbStub.java文件.这个文件可以在附件的工程中找到.

下面分析下这个类的结构:

 

有这个outline图可知,生成的TestAdbStub类首先有几种构造函数,这个TestAdbStub相当于访问webservice服务的通道.

构造函数中有一个比较常用:TestAdbStub(String),这里的String参数就是webservice的服务地址,传递这个地址,就可以构造一个

TestAdbStub对象,通过这个对象可以调用webservice提供的服务.

 

另外,注意到TestAdbStub对象还提供了两个方法 setName和getName,这个和webservice实现的接口(ITestAdb.Java)方法名称是一致的.

但是,TestAdbStub的方法中返回值和参数类型都不一样.

相关的类型:GetNameResponse,GetName和SetName都是TestAdbStub类中以静态内部类实现的类型.

这里的类型是根据wsdl中的types元素定义的,用来规范服务端和客户端之间传递数据的格式.

(符合soap协议) 参考 Axis2创建webservice服务的方式 之 ADB 方式(二)

拿TestAdbStub的setName方法来说,这个方法没有返回值,有个SetName类型的参数,根据wsdl中的定义,这个SetName定义了一个数据结构,

就相当于一个xml文件的元素,它必须包含一个args0的子元素,作为传递个服务器端setName函数的参数.

于是客户端调用TestAdbStub.setName(SetName)时,相当于发送一个请求,调用服务器端的setName方法,

SetName参数中需要事先调用SetName的public void setArgs0(java.lang.String param)方法,

这样讲将SetName对象传递给服务器端后,服务器端就知道调用setName方法,并且可以得到setName方法需要的参数.

 

由此可以用下面的代码实现客户端的访问:

package test.adb.clients;

import java.rmi.RemoteException;

public class TestAdbClient
{
  private static TestAdbStub stub = null;
  
  public static void setName(String args0) throws RemoteException
  {
    //相当于创建一个请求
    TestAdbStub.SetName req = new TestAdbStub.SetName();
    //设置请求参数
    req.setArgs0(args0);
    //发送请求
    stub.setName(req);
  }
  
  public static String getName() throws RemoteException
  {
    String result = "";
    //相当于创建一个请求
    TestAdbStub.GetName req = new TestAdbStub.GetName();
    //发送请求,取得请求的返回值(因为getName有返回值,所以有个GetNameResponse类型)
    TestAdbStub.GetNameResponse response = stub.getName(req);
    //GetNameResponse 类型取得返回值
    result = response.get_return();
    
    return result;
  }
  public static void main(String[] args)
  {
    try
    {
      stub = new TestAdbStub("http://localhost:8080/axis2/services/TestAdb");
      System.out.println(getName()); //输出Jack,因为webservice服务类,初始化时name设置为jack
      System.err.println("-----------");
      setName("Frank");
      System.out.println(getName());//输出Frank
      
    }
    catch (Exception e)
    {
      e.printStackTrace();
      System.err.println("-----------");
    }
  }
}

 

附件的工程,需要将Axis2 1.6.2版本的lib中所有jar包拷贝到webInf的lib里面

分享到:
评论

相关推荐

    Axis2创建webservice服务的方式 之 ADB 方式(二)

    NULL 博文链接:https://jackyin5918.iteye.com/blog/1909835

    webservice客户端,axiom-api,axis2-adb

    包含webservice客户端开发所需要所有jar包, axiom-api-1.2.13.jar,axis2-adb-1.4..jar,axis2-adb-1.6.2.jar,axiom-dom-1.2.13.jar,axis2-kernel-1.6.2.jar,axis2-transport-http-1.6.2.jar,axis2-transport-...

    axis2 调用webservice 例子

    <artifactId>axis2-adb <version>1.6.2 <groupId>org.apache.axis2 <artifactId>axis2-transport-local <version>1.6.2 <groupId>org.apache.axis2 <artifactId>axis2-...

    Axis2各种方式实现WebService案例代码

    Axis2各种方式(pojo、axiom、adb、xmlbeans、jibx)实现WebService,包括客户端和服务器端

    Axis2 Webservice端例子

    Axis2 Webservice端例子Axis2 Webservice端例子

    Axis2调用Webservice最全的Jar包

    里面包含axis2-adb-codegen-1.5.4.jar、axis2-java2wsdl-1.5.4.jar、axis2-transport-local-1.5.4.jar、mail-1.4.jar、woden-impl-dom-1.0M8.jar、XmlSchema-1.4.3.jar等十几个jar包

    AXIS2实现webservice jar包

    axis2-adb-1.7.4.jar axis2-adb-codegen-1.7.4.jar axis2-clustering-1.7.4.jar axis2-codegen-1.7.4.jar axis2-corba-1.7.4.jar axis2-fastinfoset-1.7.4.jar axis2-java2wsdl-1.7.4.jar axis2-jaxbri-1.7.4.jar ...

    axis2 webservice 客户的调用所需要的jar

    axis2-adb-1.6.2.jar axis2-adb-codegen-1.6.2.jar axis2-codegen-1.6.2.jar axis2-java2wsdl-1.6.2.jar axis2-kernel-1.6.2.jar axis2-transport-http-1.6.2.jar axis2-transport-local-1.6.2.jar commons-codec-...

    axis2-adb-1.6.3.jar

    axis2客户端需要使用的最少jar包, axis2相关jar包

    完整的axis2 jar包包含实例.zip

    axis2 webservice 服务端jar包: -->axis2-kernel-1.6.1.jar -->axis2-spring-1.6.1.jar -->axis2-transport-http-1.6.1.jar -->XmlSchema-1.4.7.jar -->wsdl4j-1.6.2.jar -->axiom-api-1.2.12.jar -->axiom...

    axis2-adb-1.5.4.jar

    java调用webservice接口所需jar包, axis2-adb-1.5.4.jar

    axis2 webservice client端jar包.rar

    axis2-adb-1.5.6.jar axis2-kernel-1.5.6.jar axis2-transport-http-1.6.4.jar axis2-transport-local-1.6.4.jar commons-codec-1.12.jar commons-httpclient-3.1.jar commons-logging-1.2.jar httpcore-4.3.3.jar ...

    axis2-1.6.2核心jar包

    在调用webservice时,借助axis2自动生成工具可以简化代码,但是一下导入那么多的jar包,又很占资源,经个人测试,实际上所需要的核心包就15个,如果使用adb方式调用需要再加6个包,具体jar包如下:

    axis2相关的jar包

    在调用webservice时,借助axis2自动生成工具可以简化代码,但是一下导入那么多的jar包,又很占资源,经个人测试,实际上所需要的核心包就15个,如果使用adb方式调用需要再加6个包,具体jar包如下:

Global site tag (gtag.js) - Google Analytics