使用ThreadSafeClientConnManager 我的连接池的Apache HttpComponenets-Client4.1.1。
当我将连接释放回游泳池时,我说:
cm.releaseConnection(客户端,-1,TimeUnit.SECONDS); cm.closeExpiredConnections(); cm.closeIdleConnections(20, TimeUnit.SECONDS);
[此处cm是ThreadSafeClientConnManager的对象] 并且如javadoc releaseConnection(ManagedClientConnection conn,long validDuration,TimeUnit timeUnit)中所述,我将有效持续时间设置为-ve(< = 0)值。
但是当我看到服务器日志时,我发现:
org.apache.http.impl.conn.DefaultClientConnection]连接关闭 2011-08-17 14:12:48.992 DEBUG其他Thread-257 org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager释放的连接不可重用。 2011-08-17 14:12:48.992 DEBUG其他线程-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 DEBUG Other Thread-257 [org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager]关闭过期的连接 2011-08-17 14:12:48.993 DEBUG Other Thread-257 [shaded.org.apache.http.impl.conn.tsccm.ConnPoolByRoute]关闭过期的连接 2011-08-17 14:12:48.993 DEBUG其他线程-257 [shaded.org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager]关闭空闲时间超过20秒的连接
我在日志中看到“发布的连接不可重用” 这是否意味着“-1”没有使连接可重用,连接关闭而不是返回池? 如果是这样,请建议我如何使其可重复使用。
提前致谢。
答案 0 :(得分:0)
每次发布回管理器的默认HTTP连接都被视为不可重用。如果连接保持一致状态,则在被释放回管理器之前使用ManagedClientConnection#markReusable()
将其标记为可重复使用。