如何为WSDL客户端导入CA生成目的?

时间:2016-05-30 08:55:37

标签: java eclipse web-services wsdl

我已经获得了一个WSDL文件并要求我通过它创建一个JAVA客户端,所以我运行eclipse 4.5.2,创建一个空的Dynamic web项目,将该WSDL导入该项目,然后右击:

  1. 网络服务 - >生成客户端
  2. 设置配置:Tomcat 7.0,Apache Axis
  3. 单击“完成”并弹出异常:PKIX构建路径失败
  4. 所以我查看了WSDL,它包含一些需要连接到我们的测试服务的链接:

    <soap:address location="https://example.com/testwebservice.svc" />
    

    我环顾了Stackoverflow,看起来我需要从该HTTPS服务站点导入CA.但我不知道如何在未生成代码的情况下“导入”该CA.

    请告诉我如何解决这个问题,以便继续我的开发,谢谢!

    =====================

    更新

    将CA导入我的cacerts之后,这个问题仍然存在?这很奇怪,因为我导出了这个WSDL将通过浏览器连接到的所有CA(并且keytool一直告诉我这个CA在我第一次导入后已经存在)。

    IWAB0399E Error in generating Java from WSDL:  javax.wsdl.WSDLException: WSDLException (at /wsdl:definitions/wsdl:types/xsd:schema): faultCode=OTHER_ERROR: An error occurred trying to resolve schema referenced at 'https://example.com/CPP/download/xsd0.xsd', relative to 'file:/D:/project/java_client/java_client.wsdl'.: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    javax.wsdl.WSDLException: WSDLException (at /wsdl:definitions/wsdl:types/xsd:schema): faultCode=OTHER_ERROR: An error occurred trying to resolve schema referenced at 'https://example.com/CPP/download/xsd0.xsd', relative to 'file:/D:/project/java_client/java_client.wsdl'.: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at com.ibm
    

1 个答案:

答案 0 :(得分:0)

使用此服务需要执行几个步骤。

  1. 获取/提取已公开服务的证书。这可以通过要求该服务的开发人员提供证书来完成,或者您可以使用浏览器访问该服务并在可能的情况下提取证书。

  2. 找到java的默认信任库。 Java / JRE附带位于Java安装中的全局信任库。找到cacerts文件。该文件应该在/ jre / lib / security中可用。

  3. 将证书导入信任库。使用keytool命令在cacerts文件中导入webservice证书。

    keytool -import -v -trustcacerts -alias server-alias -file server.cer -keystore cacerts -keypass changeit -storepass changeit

  4. 请注意,这不是推荐的方法,因为它只信任当前服务器/工作站上的证书,并且此文件可能会在下次Java升级中被覆盖。您需要在部署此应用程序的任何位置执行此步骤。

    虽然您需要执行上述步骤来创建服务代理(Eclipse / Apache轴项目生成)