You are viewing a plain text version of this content. The canonical link for it is here.
Posted to httpclient-users@hc.apache.org by Matt Solnit <ms...@soasta.com> on 2010/02/20 02:50:10 UTC

Maximum connection lifetime?

Hi everyone.  Using HttpClient 4.0.1, is it possible to set a maximum overall lifetime for pooled (persistent) connections?  I looked at implementing ConnectionKeepAliveStrategy, but I believe this is invoked for every request, so there is no way to "remember" when a connection was initially opened.

Currently I'm looking at creating a new sub-class of ThreadSafeClientConnManager, which in turn uses a new sub-class of DefaultClientConnectionOperator, which returns a connection wrapper that remembers when it's opened.  This could in turn be used by a ConnectionKeepAliveStrategy which knows to look for the special wrapped connection type and check how long it's been open.

It looks like the work for HTTPCLIENT-915 (https://issues.apache.org/jira/browse/HTTPCLIENT-915) might help with this approach, eliminating the need for a special wrapper class.

All that being said, is there a recommended strategy?  Any feedback would be appreciated.

Sincerely,
Matt Solnit
---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org


Re: Maximum connection lifetime?

Posted by Oleg Kalnichevski <ol...@apache.org>.
Matt Solnit wrote:
> Hi everyone.  Using HttpClient 4.0.1, is it possible to set a maximum overall lifetime for pooled (persistent) connections?  I looked at implementing ConnectionKeepAliveStrategy, but I believe this is invoked for every request, so there is no way to "remember" when a connection was initially opened.
> 
> Currently I'm looking at creating a new sub-class of ThreadSafeClientConnManager, which in turn uses a new sub-class of DefaultClientConnectionOperator, which returns a connection wrapper that remembers when it's opened.  This could in turn be used by a ConnectionKeepAliveStrategy which knows to look for the special wrapped connection type and check how long it's been open.
> 
> It looks like the work for HTTPCLIENT-915 (https://issues.apache.org/jira/browse/HTTPCLIENT-915) might help with this approach, eliminating the need for a special wrapper class.
> 
> All that being said, is there a recommended strategy?  Any feedback would be appreciated.
> 

Hi Matt

Currently idle time counter gets reset after each lease/release of a 
persistent connection, and there is not way to change this behavior 
without writing a new connection manager. The good news is that the idle 
connection handling logic is encapsulated in one class, which could be 
replaced with a pluggable strategy.

http://hc.apache.org/httpcomponents-client/httpclient/xref/org/apache/http/impl/conn/IdleConnectionHandler.html

Another possibility may be to make connection creation time available 
through the HttpConnectionMetrics interface:

http://hc.apache.org/httpcomponents-core/httpcore/apidocs/org/apache/http/HttpConnection.html#getMetrics%28%29 


Hope this helps

Oleg

---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org