アプリケーションの他の部分でキープアライブを無効にする余裕がある場合は、アプリケーションで -Dhttp.keepAlive=false システム プロパティを設定してみてください。これにより、開いている接続から BufferedInputStream を熱心に埋めようとする java-internal HttpClient クラスでの特定のハングが防止されます。
詳細については、http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4479751も参照してください。
これが、ハングしているクライアントのスタック トレースを確認するのに役立つ可能性がある場合は、次のようになります。
java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at java.io.BufferedInputStream.fill(BufferedInputStream.java:218) ) java.io.BufferedInputStream.read1(BufferedInputStream.java:258) at java.io.BufferedInputStream.read(BufferedInputStream.java:317) - sun.net.www で <0xab82fa30> (java.io.BufferedInputStream) をロック.http.HttpClient.parseHTTPHeader(HttpClient.java:687)、sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:632)、sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java) :1072) - ロックされた <0xab82c838> (sun.net.www.protocol.http.HttpURLConnection)
http.keepAlive 設定は、基本的に、HeavyWave によって提案されているように、HttpClient が常に「connection: close」を送信することを保証します。