複数のワーカーで Apache HTTP クライアントを使用していますが、ある種の競合状態があるようです (スタックトレースは最後にあります)。スタックトレースをグーグルで調べても(まだ)ヒントが得られないので、私は困惑しています。Linux で Java 1.7.0-b147 64 ビットを使用。
- ここで何か間違ったことをしていますか?
- の 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 がすべての callable に共有されます。
スタックトレース:
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)