如何使用wsdl2java从WSDL生成代码,而WSDL使用x.509证书进行了保护?

时间:2019-05-29 17:14:01

标签: 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 个答案:

答案 0 :(得分:0)

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

  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?