HttpClient executeMethod抛出java.net.SocketException:连接重置

HttpClient executeMethod抛出java.net.SocketException:连接重置,java,multithreading,apache-commons-httpclient,Java,Multithreading,Apache Commons Httpclient,我有一个java程序,它创建多个线程,每个线程在其中发出POST请求。它在大多数情况下工作正常,但在重载情况下会引发连接重置异常。例如,当我同时发出40个请求时,有几次我收到了连接重置异常 Caught: java.net.SocketException: Connection reset java.net.SocketException: Connection reset at java.net.SocketInputStream.read(SocketInputStream.java:

我有一个java程序,它创建多个线程,每个线程在其中发出POST请求。它在大多数情况下工作正常,但在重载情况下会引发连接重置异常。例如,当我同时发出40个请求时,有几次我收到了连接重置异常

Caught: java.net.SocketException: Connection reset
java.net.SocketException: Connection reset
   at java.net.SocketInputStream.read(SocketInputStream.java:168)
   at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
   at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
   at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:
   at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:105
   at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.
   at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMetho
   at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodB
   at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.j
   at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(Htt
   at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMe
   at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.jav
   at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.jav
org.apache.commons.httpclient.util.IdleConnectionTimeoutThread 
在我的Java代码中,我正在创建HttpClient的一个实例

HttpClient client = new HttpClient();
org.apache.commons.httpclient.util.IdleConnectionTimeoutThread 
当我发出一个请求,等待它完成,然后再发出另一个请求时,问题不会发生。然而,当我将程序转换为多线程时,我发现了这个问题

org.apache.commons.httpclient.util.IdleConnectionTimeoutThread 
请任何人指出我如何防止此异常,然后重试。从谷歌上,我发现答案可能与使用

org.apache.commons.httpclient.util.IdleConnectionTimeoutThread 

我正试图同时使用它,但欢迎任何其他建议。

如果您使用的是HttpClient 3,我建议您使用
多线程HttpConnectionManager
,如果您使用的是HttpClient 4,我建议您使用
PoolighttpClientConnectionManager

org.apache.commons.httpclient.util.IdleConnectionTimeoutThread 

我非常确信,HttpClient 3和HttpClient 4的默认连接管理器都只需要单线程访问。

是否有任何日志服务器端可以为您提供发生这种情况的线索?谢谢。我将其更改为使用多线程HttpConnectionManager,从而解决了连接重置问题。我想投票支持你的答案,但不幸的是我没有15%的声誉。我认为你应该能够接受这个答案。很高兴它成功了
org.apache.commons.httpclient.util.IdleConnectionTimeoutThread