【发布时间】:2012-05-19 02:39:31
【问题描述】:
我正在使用 ThreadSafeClientConnManager Apache HttpComponenets-Client4.1.1 用于我的连接池。
当我将连接释放回池时,我会说:
cm.releaseConnection(client,-1,TimeUnit.SECONDS); cm.closeExpiredConnections(); cm.closeIdleConnections(20, TimeUnit.SECONDS);
[这里cm是ThreadSafeClientConnManager的对象] 并且如 javadoc releaseConnection(ManagedClientConnection conn, long validDuration,TimeUnit timeUnit) 中所述,将有效持续时间设置为 -ve (
但是当我看到服务器日志时,我发现:
org.apache.http.impl.conn.DefaultClientConnection] 连接关闭 2011-08-17 14:12:48.992 调试其他 Thread-257 org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager 释放的连接不可重用。 2011-08-17 14:12:48.992 调试其他线程 257 org.apache.http.impl.conn.tsccm.ConnPoolByRoute 释放连接 [HttpRoute[{}->http://server-name:port][null] 2011-08-17 14:12:48.992 调试其他线程 257 [org.apache.http.impl.conn.tsccm.ConnPoolByRoute] 通知没有人,没有等待线程 2011-08-17 14:12:48.993 调试其他线程 257 [org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager] 关闭过期连接 2011-08-17 14:12:48.993 调试其他线程 257 [shaded.org.apache.http.impl.conn.tsccm.ConnPoolByRoute] 关闭过期连接 2011-08-17 14:12:48.993 调试其他线程 257 [shaded.org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager] 关闭连接空闲时间超过 20 秒
我在日志中看到“已释放的连接不可重用” 这是否意味着“-1”没有使连接可重用并且连接被关闭而不是返回池? 如果可以,任何人都可以建议我如何使其可重复使用。
提前致谢。
【问题讨论】:
标签: java apache-httpclient-4.x