2011-08-17 35 views
0

正在使用ThreadSafeClientConnManager Apache HttpComponenets-Client4.1.1爲我的連接池。查詢ThreadSafeClientConnManager(Apache HttpClient 4.1.1)

當我釋放連接返回到池中我說:

cm.releaseConnection(客戶端,-1,TimeUnit.SECONDS); cm.closeExpiredConnections(); cm.closeIdleConnections(20, TimeUnit.SECONDS);

[這裏釐米是ThreadSafeClientConnManager的對象] 並作爲在Javadoc releaseConnection提到(ManagedClientConnection康恩,長validDuration,TIMEUNIT TIMEUNIT)正在設置的有效持續時間,以-ve(< = 0)的值。

但是,當我看到服務器日誌我發現:

org.apache.http.impl.conn.DefaultClientConnection]連接關閉 2011-08-17 14:12:48.992 DEBUG其他線程-257組織.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 DEBUG其他線程-257 [org.apache.http.impl.conn.tsccm.ConnPoolByRoute]通知沒有人,沒有等待線程 2011-08-17 14: 12:48.993 DEBUG其他線程-257 [org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager]關閉過期連接 2011-08-17 14:12:48.993 DEBUG其他線程-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 SECONDS

在這裏,我在日誌中看到「發佈的連接不可重用」 這是否意味着「-1」不會使連接可重用,並且連接關閉而不是返回到池? 如果是的話,任何人都可以請建議我如何使它可重用。

在此先感謝。

回答

0

釋放回管理器的默認HTTP連接被認爲是不可重用的。如果連接保持一致狀態,則在釋放回管理器之前,應使用ManagedClientConnection#markReusable()將其標記爲可重用。

+0

謝謝奧列格。有效。 – kshama 2011-08-24 19:14:08