theboyaply

学,就硬学!

  • Home
  • Archives
  • Java
  • Maven
  • Docker
  • Kubernetes
  • JavaScript
  • ES6
  • Vue
  • 踩坑记录
  • noted

  • 搜索
element ui vue wsimport webservice npm mysql redis node nginx nfs ftp es6 开发工具 vscode 前端 javascript springboot 常见问题 tomcat oracle jenkins maven k8s Linux gitlab docker java

使用java的wsimport生成Webservice客户端代码

发表于 2022-11-10 | 分类于 Java | 0 | 阅读次数 109

  • 介绍
  • 用法
  • 代码调用

参考链接:

https://blog.csdn.net/sinat_18132365/article/details/79668137

https://blog.csdn.net/z69183787/article/details/53505941

介绍

与三方系统对接的时候,如果对方提供的是webservice接口,我们需要根据对方的接口地址来生成对应的客户端代码。方法有很多种,以前常用的就是使用IntelliJ IDEA自带的WebService相关工具生成,并且生成的代码还会附带测试用例。

但是最近我升级了IntelliJ IDEA版本,导致自带的WebService工具找不到了或者生成的代码与预期不一致,因此去网上找了另一种方式,就是使用java自带的命令wsinporrt来生成。

用法

wsimport所在路径为%JAVA_HOME%/bin下面,常用语法为:

wsimport -encoding utf-8 -p com.theboyaply.wsdl -keep -s D:/wsdl/source -d D:/wsdl/dist http://127.0.0.1:8001/HelloWorld?wsdl
  • encoding:指定生成文件的编码,不指定默认操作系统的编码。
  • p:生成文件所在包名。
  • keep:生成客户端源代码。
  • s:生成的源代码所在目录。
  • d:生成的class所在目录。
  • 最后一个参数是wsdl地址。

代码调用

以前用IntelliJ IDEA自带的WebService生成的代码会提供测试代码示例,现在生成的代码没看到了(这块没具体研究,反正就这样理解吧,不影响这篇文章技术点)。所以有时候看着生成的客户端代码,不知道从何下手,不知道怎么用。

这里简单介绍下思路:

1、在生成的源代码里全局搜索你的wsdl地址,比如上面我们的地址是:127.0.0.1。一般来讲你会发现WorkflowService.java这个文件,因为wsdl地址就写在里面。好了,这个就是入口类。接下来你只需要去看这里面的方法,然后构造方法的参数传进去就行了。

2、找到入口类后,需要去构造方法的参数,有时候你会看到方法的参数是JAXBElement<String> value或者其它JAXBElement<Xxx> value格式,不要急,你可以再去生成的源代码里找找是否有一个文件叫ObjectFactory.java,如果有,那么你可以使用它来构造你的参数。ObjectFactory里面包含了所有方法需要的参数的构造方式。

比如有一个方法是这样的setRequestName:

public class WorkflowRequestInfo {
    protected JAXBElement<String> requestName;
    public void setRequestName(JAXBElement<String> value) {
        this.requestName = value;
    }
}

那么你可以使用如下代码去获取它的参数:

ObjectFactory objectFactory = new ObjectFactory();
// objectFactory的方法名一般都是create+对象名+属性名
JAXBElement<String> jaxbERequestName = objectFactory.createWorkflowRequestInfoRequestName("xxx");

– end –

# java # webservice # wsimport
Linux安装MySQL8
ElementUi+Vue2使用技巧
  • 文章目录
  • 站点概览
theboyaply

theboyaply

好记性不如烂笔头

185 日志
13 分类
27 标签
Github E-mail
Creative Commons
0%
© 2019 — 2023 theboyaply
由 Halo 强力驱动
|
主题 - NexT.Gemini
湘ICP备19009291号

湘公网安备 43312402001034号