zoukankan      html  css  js  c++  java
  • 信步漫谈之Axis2—wsdl2java工具使用

    一、概述

    Axis2 提供了一个 wsdl2java 命令可以根据 WSDL 文件自动产生调用 WebService 的代码。wsdl2java 命令可以在 <Axis2安装目录> 下的 bin 目录中找到。在使用 wsdl2java 命令之前需要设置 AXIS2_HOME 环境变量,该变量值是 <Axis2安装目录>。以下以 Windows 平台上使用为例。

    二、生成客户端代码

    进入 Windows 控制台,执行如下命令来生成 WebService 的客户端代码:

    %AXIS2_HOME%inwsdl2java -uri http://127.0.0.1:8080/awyb/services/mySoapService?wsdl -p client -s -o stub

    其中 -uri 参数指定了 wsdl 文件的路径,可以是本地路径,也可以是网络路径。-p 参数指定了生成的 Java 类的包名,-o 参数指定了生成的一系列文件保存的根目录。在执行完上面的命令后,我们就会发现在当前目录下多了个stub目录,在 ./stub/src/client 目录可以找到对应的客户端调用文件,这些文件复杂调用 WebService,我们可以在程序中直接使用这些文件。例如:

    package client;
    
    import client.MySoapServiceStub.SayHello;
    import client.MySoapServiceStub.SayHelloResponse;
    
    
    public class StubClient {
        public static void main(String[] args) throws Exception {
            MySoapServiceStub stub = new MySoapServiceStub();
            SayHello sayHello = new SayHello();
            SayHelloResponse resp = stub.sayHello(sayHello);
            String ret = resp.get_return();
            System.out.println(ret);
        }
    }

    以上程序自动生成的客户端调用文件 MySoapServiceStub.java,我们通过调用该文件实现客户端访问,大大简化了调用 WebService 的步骤,并使代码更加简洁。但要注意的是,wsdl2java 命令生成的 Stub 类将 WebService 方法的参数都封装在了相应的类中,类名为方法名,例如,sayHello 方法的参数都封装在了 SayHello 类中,要想调用 sayHello 方法,必须先创建 SayHello 类的对象实例。

    三、wsdl2java 参数详解

    命令行格式为:wsdl2java [options] -uri <url or path> : A url or path to a WSDL

    其中常用的options具体如下:

    -o <path> 指定生成代码的输出路径
    -a 生成异步模式的代码
    -s 生成同步模式的代码
    -p <pkg> 指定代码的package名称
    -l <languange> 使用的语言(Java/C) 默认是java
    -t 为代码生成测试用例
    -ss 生成服务端代码默认不生成
    -sd 生成服务描述文件 services.xml,仅与-ss一同使用
    -d <databinding> 指定databingding,例如,adb,xmlbean,jibx,jaxme and jaxbri
    -g 生成服务端和客户端的代码
    -pn <port_name> 当WSDL中有多个port时,指定其中一个port
    -sn <serv_name> 选择WSDL中的一个service
    -u 展开data-binding的类
    -r <path> 为代码生成指定一个repository
    -ssi 为服务端实现代码生成接口类
    -S 为生成的源码指定存储路径
    -R 为生成的resources指定存储路径
    --noBuildXML 输出中不生成build.xml文件
    --noWSDL 在resources目录中不生成WSDL文件
    --noMessageReceiver 不生成MessageReceiver类
  • 相关阅读:
    1059 C语言竞赛
    1058 选择题
    1057 数零壹
    1056 组合数的和
    1055 集体照
    Mysql--分库分表
    Mysql--改表结构
    Mysql--开始阶段
    Mysql--常用语句
    Mysql--grant授权
  • 原文地址:https://www.cnblogs.com/alfredinchange/p/5399170.html
Copyright © 2011-2022 走看看