【问题标题】:Webservice calling EJB creates SSL exception调用 EJB 的 Web 服务创建 SSL 异常
【发布时间】:2011-11-29 20:24:52
【问题描述】:

我有一个 JAX-WS Web 服务,它调用同一服务器上的远程 EJB。一切都在 Glassfish 3.1.1 上运行,并且应用程序部署为 EAR——一个用于 Web 服务,另一个用于 EJB。这在本地工作得很好,但是在部署到测试服务器时,我得到了关于不受信任(自签名)SSL 证书的典型异常。以下是相关摘录:

Caused by: com.sun.xml.ws.client.ClientTransportException: HTTP transport error: 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.sun.xml.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:132)

该异常恰好发生在进行 EJB 调用的 Web 服务中。这让我感到困惑,因为那时我不希望与 HTTPS 有任何关系。

到目前为止,最有希望的角度是这与事务协调有关,如 here 所述,默认情况下应该使用 HTTPS。但是,设置 com.sun.xml.ws.tx.preferredScheme=http 对问题没有影响。

非常感谢任何建议。

【问题讨论】:

    标签: web-services jakarta-ee glassfish jax-ws


    【解决方案1】:

    这是因为客户端不知道它应该使用哪个信任库 - 因此它不信任该服务并且 SSL 握手失败。使用以下 VMarg 运行“客户端”:

    -Djavax.net.ssl.trustStore=${truststore.location}
    -Djavax.net.ssl.trustStorePassword=${ssl.password}
    

    如果您使用 NetBeans,则可以在项目属性中进行设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多