我正在尝试使用来自 https wsdl 的 wsimport 生成 Web 服务客户端:
call wsimport -d bin -s src -p mypackage.ws https://x.x.x.x:8181/services/SomeService?wsdl
为了解决安全错误,我将服务器证书添加到 Java 的密钥库中:
keytool -import -keystore c:\Java\jdk1.6.0_38\jre\lib\security\cacerts -file c:\ca-dev.crt
但是当我执行 wsimport 时出现错误:
[错误] java.security.cert.CertificateException:不存在主题替代名称
WSDL 文档读取失败:https://xxxx:8181/services/SomeService?wsdl,因为 1) 找不到文档;/2) 文件无法读取;3) 文档的根元素不是 .
[ERROR] failed.noservice=在提供的 WSDL(s) 中找不到 wsdl:service:
需要提供至少一个具有至少一个服务定义的 WSDL。
Failed to parse the WSDL.
解决了! 在 hosts 文件中添加了名称与证书 CN 相同的条目。