public class ThreadSafeClientConnManager extends java.lang.Object implements ClientConnectionManager
client connections
and
is able to service connection requests from multiple execution threads.
Connections are pooled on a per route basis. A request for a route which
already the manager has persistent connections for available in the pool
will be services by leasing a connection from the pool rather than
creating a brand new connection.
ThreadSafeClientConnManager maintains a maximum limit of connection on a per route basis and in total. Per default this implementation will create no more than than 2 concurrent connections per given route and no more 20 connections in total. For many real-world applications these limits may prove too constraining, especially if they use HTTP as a transport protocol for their services. Connection limits, however, can be adjusted using HTTP parameters.
The following parameters can be used to customize the behavior of this class:
ConnPerRoute
,
ConnPerRouteBean
Modifier and Type | Field and Description |
---|---|
protected AbstractConnPool |
connectionPool
The pool of connections being managed.
|
protected ClientConnectionOperator |
connOperator
The operator for opening and updating connections.
|
protected SchemeRegistry |
schemeRegistry
The schemes supported by this connection manager.
|
Constructor and Description |
---|
ThreadSafeClientConnManager(HttpParams params,
SchemeRegistry schreg)
Creates a new thread safe connection manager.
|
Modifier and Type | Method and Description |
---|---|
void |
closeExpiredConnections()
Closes all expired connections in the pool.
|
void |
closeIdleConnections(long idleTimeout)
Closes idle connections in the pool.
|
protected ClientConnectionOperator |
createConnectionOperator(SchemeRegistry schreg)
Hook for creating the connection operator.
|
protected AbstractConnPool |
createConnectionPool(HttpParams params)
Hook for creating the connection pool.
|
protected void |
finalize() |
int |
getConnectionsInPool()
Gets the total number of pooled connections.
|
int |
getConnectionsInPool(HttpRoute route)
Gets the total number of pooled connections for the given route.
|
SchemeRegistry |
getSchemeRegistry()
Obtains the scheme registry used by this manager.
|
void |
releaseConnection(ManagedClientConnection conn,
long validDuration)
Releases a connection for use by others.
|
ClientConnectionRequest |
requestConnection(HttpRoute route,
java.lang.Object state)
Returns a new
ClientConnectionRequest , from which a
ManagedClientConnection can be obtained or the request can be
aborted. |
void |
shutdown()
Shuts down this connection manager and releases allocated resources.
|
protected final SchemeRegistry schemeRegistry
protected final AbstractConnPool connectionPool
protected final ClientConnectionOperator connOperator
public ThreadSafeClientConnManager(HttpParams params, SchemeRegistry schreg)
params
- the parameters for this manager.schreg
- the scheme registry.protected void finalize() throws java.lang.Throwable
finalize
in class java.lang.Object
java.lang.Throwable
protected AbstractConnPool createConnectionPool(HttpParams params)
protected ClientConnectionOperator createConnectionOperator(SchemeRegistry schreg)
DefaultClientConnectionOperator
.schreg
- the scheme registry.public SchemeRegistry getSchemeRegistry()
ClientConnectionManager
getSchemeRegistry
in interface ClientConnectionManager
null
public ClientConnectionRequest requestConnection(HttpRoute route, java.lang.Object state)
ClientConnectionManager
ClientConnectionRequest
, from which a
ManagedClientConnection
can be obtained or the request can be
aborted.requestConnection
in interface ClientConnectionManager
public void releaseConnection(ManagedClientConnection conn, long validDuration)
ClientConnectionManager
releaseConnection
in interface ClientConnectionManager
conn
- the connection to releasevalidDuration
- the duration of time this connection is valid for reuseClientConnectionManager.closeExpiredConnections()
public void shutdown()
ClientConnectionManager
shutdown
in interface ClientConnectionManager
public int getConnectionsInPool(HttpRoute route)
route
- the route in questionpublic int getConnectionsInPool()
public void closeIdleConnections(long idleTimeout)
ClientConnectionManager
closeIdleConnections
in interface ClientConnectionManager
idleTimeout
- the idle time of connections to be closedClientConnectionManager.closeExpiredConnections()
public void closeExpiredConnections()
ClientConnectionManager
closeExpiredConnections
in interface ClientConnectionManager