我正在使用 httpclient 4.1.2。如果我连接到特定主机 XYZ 并保持客户端程序运行超过 5 到 6 小时,则连接到同一主机 XYZ 开始给出:
org.apache.http.conn.ConnectTimeoutException: Connect to XYZ timed out
at
org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:377)
at
org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:148)
at
org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
at
org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
at
org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:573)
at
org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:425)
at
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
at
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
at
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:732)
如果我连接到不同的主机,它将成功。一旦我重新启动我的客户端程序,问题就会消失。通过浏览器连接到同一主机会成功。
服务器是 tomcat 6。客户端和服务器都在 JRE 5 上运行。我设置了连接超时 = 20000 和套接字超时 = 60000。我正在使用 DefaultHttpClient 和 SingleClientConnManager。