java - 如何使用 wsdl2java 从使用 x.509 证书保护的 WSDL 生成代码?

标签 java cxf x509 wsdl2java

我尝试使用 wsdl2java 生成 Java 类。

Wsdl 位于使用 X509 证书保护的远程服务器中,这样,当我尝试在浏览器中访问它而信任存储中没有证书时,它会返回错误(当然,当我有证书时)导入到 certmgr.msc 中,wsdl 显示得很好)。

不幸的是,当我尝试运行 wsdl2java 时,我得到:

> org.apache.cxf.wsdl11.WSDLRuntimeException: Fail to create wsdl definition file:/resources/wsdl/my.xml: WSDLException (at /wsdl:definitions/wsdl:types/xsd:schema): faultCode=PARSER_ERROR: Problem parsing 'https://SERVER_HOST/my?xsd=../xsd/XX.xsd'.: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

我已将证书导入 JKS 商店。

我如何建议 wsdl2java 使用 JKS 的证书来连接到服务器?

最佳答案

我建议您通过以下步骤跳过此问题:

  1. 手动将该 wsdl 下载到本地计算机。

  2. 手动将该 wsdl 文件中引用的 xsd 文件下载到本地计算机。

  3. 修改该 wsdl 以将 xsd 位置更改为本地位置。

  4. 您现在可以生成 Java 代码了。

如果你真的想成功的话。请引用这里:

"%JAVA_HOME%\bin\java" -Djavax.net.ssl.trustStore="{keystorefile}" -Djavax.net.ssl.trustStorePassword="{password}" -Djavax.net.ssl.keyStoreType="jks" -Dorg.jboss.security.ignoreHttpsHost="true" -Xmx128M -Djava.endorsed.dirs="%CXF_HOME%\lib\endorsed" -cp "%CXF_JAR%;%TOOLS_JAR%;%CLASSPATH%" -Djava.util.logging.config.file="%CXF_HOME%\etc\logging.properties" org.apache.cxf.tools.wadlto.WADLToJava %*

来自:How to generate client code using wsdl2java through https?

关于java - 如何使用 wsdl2java 从使用 x.509 证书保护的 WSDL 生成代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56365583/

相关文章:

ssl - 拉取存储库时出现 X509 解析错误, 'negative serial number'

public-key-encryption - java.security.spec.InvalidKeySpecException : java. security.InvalidKeyException:IOException:检测过早的 EOF

java - 如何在 Soap-UI 中附加 Xml 文件

java - 为什么嵌套类不能用作Filter的类

jax-ws - CXF RS 和 JAX-WS 编码的内容不可读

servlets - 从 HttpServletRequest 中提取 SOAP 对象

java - 如何从用户的公钥中读取发行者字符串?

java - 更改 OSX Mavericks 停靠图标上的 java webstart 悬停文本

java - Spring webflux 中的异常处理

unit-testing - JMockit - 模拟 CXF web 服务端口对象