wsimport是JDK内置的WSDL生成Java客户端代码工具;需验证环境、使用-keep/-p等参数生成代码,处理XSD引用、证书、编码等问题后,通过Service类调用接口方法。

使用 wsimport 工具可以从 WSDL 文件自动生成 Java 客户端代码,这是 JAX-WS 提供的标准命令行工具,无需额外依赖(JDK 6 及以上已内置)。
确认环境支持 wsimport
确保已安装 JDK(推荐 JDK 8 或更高版本),并在终端中执行以下命令验证:
- wsimport -version —— 查看工具版本
-
which wsimport(Linux/macOS)或 where wsimport(Windows)—— 确认路径是否在
JAVA_HOME/bin下
若提示“command not found”,说明未正确配置环境变量,需将 $JAVA_HOME/bin 加入系统 PATH。
基础用法:生成默认客户端代码
最简命令如下(假设 WSDL 文件路径为 http://example.com/service?wsdl 或本地文件 service.wsdl):
- 远程 WSDL:wsimport -keep -p com.example.client http://example.com/service?wsdl
- 本地 WSDL:wsimport -keep -p com.example.client ./service.wsdl
常用参数说明:
本文档主要讲述的是maven使用方法;Maven是基于项目对象模型的(pom),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven将你的注意力从昨夜基层转移到项目管理层。Maven项目已经能够知道 如何构建和捆绑代码,运行测试,生成文档并宿主项目网页。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
- -keep:保留生成的 .java 源文件(默认只生成 .class)
- -p:指定生成代码的包名(不加则按 WSDL 中的 targetNamespace 自动生成)
- -s:指定源码输出目录(如 -s ./src/main/java)
- -d:指定编译后 class 输出目录(如 -d ./target/classes)
处理常见问题
实际使用中可能遇到以下情况:
- WSDL 引用外部 XSD 或其他 WSDL:添加 -extension 参数启用扩展支持(部分复杂结构必需)
- 证书错误(HTTPS + 自签名证书):需先将服务端证书导入本地 truststore,或临时用 -Xnocompile 仅生成代码再手动编译
- 命名冲突或类型映射异常:可配合 -b 参数绑定自定义 JAXB 映射文件(binding.xjb)
- 中文注释乱码:添加 JVM 参数 -J-Dfile.encoding=UTF-8
生成后快速调用示例
代码生成完成后,典型调用流程如下:
- 找到生成的 Service 类(如
MyService),它通常继承自javax.xml.ws.Service - 通过
new MyService()获取实例,再调用getPort(XXXInterface.class)获得端口对象 - 直接调用接口中定义的方法,例如
port.sayHello("world")
注意:生成的代码不含业务逻辑,仅封装了 SOAP 请求/响应的序列化与传输细节,异常处理和超时控制需自行补充(如通过 BindingProvider 设置请求属性)。









