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

3
我尝试使用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个回答

2
我建议您通过以下步骤跳过这个问题:
  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 %*

来源:如何通过https使用wsdl2java生成客户端代码?

  1. 大约有一百个文件,所以我无法手动完成。
  2. 谢谢,这个方法有效:wsdl2java -Djavax.net.ssl.keyStore=/path/to/file.jks -Djavax.net.ssl.keyStorePassword=XXX
- undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接