java自带wsimport命令生成webservice客户端代码及服务调用

wsimport是jdk自带的命令,可在jdk/bin目录下找到wsimport.exe,根据wsdl文档生成客户端中间代码,基于生成的代码编写客户端,可以省很多麻烦。

(本文服务端代码链接:http://blog.csdn.net/qq_32672633/article/details/77948222
在配有jdk环境的,进入命令行执行 wsimport 命令生成客户端代码,具体内容如下:

wsimport命令用法
wsimport [options] WSDL_URI
比较常用的[options]有:
1. -d <directory>
在指定的目录生成class文件
2. -clientjar <jarfile>
在当前目录生成jar文件,结合-d <directory>可以在指定的目录生成jar文件
3. -s <directory>
在指定的目录生成java源文件
4. -p <pkg>
指定生成文件的包结构
5. -keep
在生成class文件,或者jar包时,同时保留java源文件

常用组合
1、在指定的目录生成指定包结构的java源文件
假设wsdl文档的uri为http://localhost:12345/aservice?wsdl,那么在E:\temp下,生成包结构为com.nantian.ws的java源文件的命令为:
wsimport -s E:\temp -p com.nantian.ws http://localhost:12345/aservice?wsdl

2、在指定的目录生成指定包结构的jar文件(需要JDK1.8以上版本)
假设wsdl文档的uri为http://localhost:12345/aservice?wsdl,那么在E:\temp下,生成包结构为com.nantian.ws的ws.jar的命令为:
wsimport -d E:\temp -clientjar ws.jar -p com.nantian.ws http://localhost:12345/aservice?wsdl

生成客户端代码后放入我们的项目中
这里写图片描述

然后就可以测试调用我们的接口了
这里我们写一个类Test.java进行测试,
(1)、动态生成客户端代码,不会过度依赖生成的客户端代码(用axis、CXF一类的webservice框架可以不用导入这么多客户端代码就能调用接口,框架类的后续再更,本篇就介绍jax-ws)

package com.nantian.ws.client;

import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import com.nantian.ws.Aservice;

public class Test {

    public static void main(String[] args) {
        try {  
            //创建访问wsdl服务地址的url  
            URL url = new URL("http://localhost:12345/aservice?wsdl");  
            //通过QName指明服务的和具体信息  
            QName sname= new QName("http://ws.nantian.com/","AserviceImplService");  
            //创建服务  
            Service service = Service.create(url,sname);  
            //实现接口  
            Aservice ms =service.getPort(Aservice.class);  

            System.out.println(ms.add(12, 33));  
            System.out.println(ms.getMessageWithParam("11111"));
        } catch (MalformedURLException e) {  
            e.printStackTrace();  
        } 
    }
}

运行结果:

45
Your message is :11111

(2)、完全使用客户端代码调用接口

package com.nantian.ws.client;

import com.nantian.ws.Aservice;
import com.nantian.ws.AserviceImplService;

public class Test {

    public static void main(String[] args) {

        AserviceImplService ais = new AserviceImplService();
        Aservice aservice = ais.getAserviceImplPort();
        int sum = aservice.add(1, 2);
        String msg = aservice.getMessage();
        System.out.println("sum is :"+sum);
        System.out.println("msg :"+msg);

    }
}

运行结果:

sum is :3
msg :hello

不同的方式,都能得到想要的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值