0

我正在为我的连接池使用 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 (<=0) 值。

但是当我看到服务器日志时,我发现:

org.apache.http.impl.conn.DefaultClientConnection] 连接关闭 2011-08-17 14:12:48.992 DEBUG Other 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。

在这里,我在日志中看到“已释放的连接不可重用”这是否意味着“-1”没有使连接可重用并且连接已关闭而不是返回池?如果可以,任何人都可以建议我如何使其可重复使用。

提前致谢。

4

1 回答 1

0

默认情况下,释放回管理器的 HTTP 连接被认为是不可重用的。如果连接保持一致状态,则应ManagedClientConnection#markReusable()在将其释放回管理器之前将其标记为可重用。

于 2011-08-21T14:34:03.187 回答