查询ThreadSafeClientConnManager(Apache HttpClient 4.1.1)

时间:2011-08-17 11:47:52

标签: java apache-httpclient-4.x

使用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”没有使连接可重用,连接关闭而不是返回池? 如果是这样,请建议我如何使其可重复使用。

提前致谢。

1 个答案:

答案 0 :(得分:0)

每次发布​​回管理器的默认HTTP连接都被视为不可重用。如果连接保持一致状态,则在被释放回管理器之前使用ManagedClientConnection#markReusable()将其标记为可重复使用。