Java SSLSocketImpl.GetEnablediPhone套件中的NPE
我在多个worker中使用apachehttp客户机,看起来存在某种竞争条件(stacktrace在末尾)。我很困惑,因为谷歌搜索stacktrace并没有提供任何提示。在Linux上使用Java 1.7.0-b147 64位Java SSLSocketImpl.GetEnablediPhone套件中的NPE,java,ssl,stack-trace,Java,Ssl,Stack Trace,我在多个worker中使用apachehttp客户机,看起来存在某种竞争条件(stacktrace在末尾)。我很困惑,因为谷歌搜索stacktrace并没有提供任何提示。在Linux上使用Java 1.7.0-b147 64位 我做错什么了吗 对于Sun的SSLSocket,是否有已知的、有效的替代方案 编辑: 可能不太有用,但调用代码如下: public String call() { HttpUriRequest request = new HttpGet(aUrl); Ht
SSLSocket
,是否有已知的、有效的替代方案public String call() {
HttpUriRequest request = new HttpGet(aUrl);
HttpResponse response = httpClient.execute(request);
StatusLine statusLine = response.getStatusLine();
return EntityUtils.toString(response.getEntity());
}
其中httpClient被共享给所有可调用项
Stacktrace:
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)
java.lang.NullPointerException
位于sun.security.ssl.SSLSocketImpl.getEnablediPhone套件(SSLSocketImpl.java:2320)
位于javax.net.ssl.SSLSocket.getSSLParameters(SSLSocket.java:614)
位于sun.security.ssl.SSLSocketImpl.getSSLParameters(SSLSocketImpl.java:2406)
位于sun.security.ssl.sslalgorithconstraints.(sslalgorithconstraints.java:65)
位于sun.security.ssl.Handshaker.init(Handshaker.java:236)
位于sun.security.ssl.Handshaker.(Handshaker.java:191)
位于sun.security.ssl.ClientHandshaker(ClientHandshaker.java:104)
位于sun.security.ssl.SSLSocketImpl.initHandshaker(SSLSocketImpl.java:1217)
位于sun.security.ssl.SSLSocketImpl.doneConnect(SSLSocketImpl.java:634)
位于sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:608)
位于org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:414)
位于org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
位于org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
位于org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:643)
位于org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479)
位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784)
这是JDK的问题。我们在运行JDK 1.7.0_u4时遇到了这个问题,在升级到JDK 1.7.0_u25后得到了解决。您哪里做错了?在什么代码中?@EJP在多线程中使用HttpClient for HTTPS;虽然我认为HttpClient不是问题的原因,但是您如何接受提示并发布代码?你还指望得到什么帮助?谢谢你的提示。我将尝试升级。你知道Oracle的跟踪器上是否有相关的bug报告吗?我在Oracle的跟踪器中找不到它。Java7是在两年多前发布的,发布候选版本甚至更老。升级到更新的JDK版本可能是个好主意。