我尝试使用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的证书来连接到服务器?
答案 0 :(得分:0)
我建议您通过以下步骤跳过此问题:
手动将该wsdl下载到本地计算机。
将该wsdl文件中引用的xsd文件手动下载到本地计算机。
修改该wsdl以将xsd位置更改为本地位置。
您现在就可以生成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?