java - SSLSocketImpl.getEnabledCipherSuites 中的 NPE

标签 java ssl stack-trace

我在多个工作线程中使用 Apache HTTP 客户端,看起来存在某种竞争条件(堆栈跟踪位于末尾)。我很困惑,因为谷歌搜索堆栈跟踪还没有提供任何提示。在 Linux 上使用 Java 1.7.0-b147 64 位。

  1. 我在这里做错了什么吗?
  2. 是否有已知的、有效的 Sun 的 SSLSocket 实现 替代方案?

编辑: 也许没用,但调用代码如下:

public String call() {
    HttpUriRequest request = new HttpGet(aUrl);
    HttpResponse response = httpClient.execute(request);
    StatusLine statusLine = response.getStatusLine();
    return EntityUtils.toString(response.getEntity());
}

其中 httpClient 共享给所有可调用对象。

堆栈跟踪:

java.lang.NullPointerException
 at sun.security.ssl.SSLSocketImpl.getEnabledCipherSuites(SSLSocketImpl.java:2320)
 at javax.net.ssl.SSLSocket.getSSLParameters(SSLSocket.java:614)
 at sun.security.ssl.SSLSocketImpl.getSSLParameters(SSLSocketImpl.java:2406)
 at sun.security.ssl.SSLAlgorithmConstraints.<init>(SSLAlgorithmConstraints.java:65)
 at sun.security.ssl.Handshaker.init(Handshaker.java:236)
 at sun.security.ssl.Handshaker.<init>(Handshaker.java:191)
 at sun.security.ssl.ClientHandshaker.<init>(ClientHandshaker.java:104)
 at sun.security.ssl.SSLSocketImpl.initHandshaker(SSLSocketImpl.java:1217)
 at sun.security.ssl.SSLSocketImpl.doneConnect(SSLSocketImpl.java:634)
 at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:608)
 at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:414)
 at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
 at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
 at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:643)
 at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479)
 at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
 at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
 at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784) 

最佳答案

这是一个 JDK 问题。我们在运行 JDK 1.7.0_u4 时遇到了这个问题,升级到 JDK 1.7.0_u25 后解决了。

关于java - SSLSocketImpl.getEnabledCipherSuites 中的 NPE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18638855/

相关文章:

java - 重新加载页面,但保留 DOM 保存

apache - 为什么 Google 不通过 SSL 提供 adsense?

c++ - 帮助构建 boost asio ssl 示例

c++ - 如何在 Netbeans C++ IDE 中获取堆栈跟踪

Java:从文本中读取字符和字节

java - 线程卡在 Thread.join() 中,即使其他线程已终止

java - 如何更改 Play Framework 2 "test"设置以显示完整的堆栈跟踪?

java - 如何正确编辑图库中的位图?

java - 通过JDBC PreparedStatement执行选择时出现“日期格式图片结束..”错误

ssl - Helm Ingress 中的 Traefik LetsEncrypt 证书