@ThreadSafe public class PoolingClientConnectionManager extends Object implements ClientConnectionManager, ConnPoolControl<HttpRoute>
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.
PoolingConnectionManager 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.
| Constructor and Description |
|---|
PoolingClientConnectionManager() |
PoolingClientConnectionManager(SchemeRegistry schreg) |
PoolingClientConnectionManager(SchemeRegistry schreg,
DnsResolver dnsResolver) |
PoolingClientConnectionManager(SchemeRegistry schemeRegistry,
long timeToLive,
TimeUnit tunit) |
PoolingClientConnectionManager(SchemeRegistry schemeRegistry,
long timeToLive,
TimeUnit tunit,
DnsResolver dnsResolver) |
| Modifier and Type | Method and Description |
|---|---|
void |
closeExpiredConnections()
Closes all expired connections in the pool.
|
void |
closeIdleConnections(long idleTimeout,
TimeUnit tunit)
Closes idle connections in the pool.
|
protected ClientConnectionOperator |
createConnectionOperator(SchemeRegistry schreg)
Hook for creating the connection operator.
|
protected void |
finalize() |
int |
getDefaultMaxPerRoute() |
int |
getMaxPerRoute(HttpRoute route) |
int |
getMaxTotal() |
SchemeRegistry |
getSchemeRegistry()
Obtains the scheme registry used by this manager.
|
PoolStats |
getStats(HttpRoute route) |
PoolStats |
getTotalStats() |
void |
releaseConnection(ManagedClientConnection conn,
long keepalive,
TimeUnit tunit)
Releases a connection for use by others.
|
ClientConnectionRequest |
requestConnection(HttpRoute route,
Object state)
Returns a new
ClientConnectionRequest, from which a
ManagedClientConnection can be obtained or the request can be
aborted. |
void |
setDefaultMaxPerRoute(int max) |
void |
setMaxPerRoute(HttpRoute route,
int max) |
void |
setMaxTotal(int max) |
void |
shutdown()
Shuts down this connection manager and releases allocated resources.
|
public PoolingClientConnectionManager(SchemeRegistry schreg)
public PoolingClientConnectionManager(SchemeRegistry schreg, DnsResolver dnsResolver)
public PoolingClientConnectionManager()
public PoolingClientConnectionManager(SchemeRegistry schemeRegistry, long timeToLive, TimeUnit tunit)
public PoolingClientConnectionManager(SchemeRegistry schemeRegistry, long timeToLive, TimeUnit tunit, DnsResolver dnsResolver)
protected void finalize()
throws Throwable
protected ClientConnectionOperator createConnectionOperator(SchemeRegistry schreg)
DefaultClientConnectionOperator.schreg - the scheme registry.public SchemeRegistry getSchemeRegistry()
ClientConnectionManagergetSchemeRegistry in interface ClientConnectionManagernullpublic ClientConnectionRequest requestConnection(HttpRoute route, Object state)
ClientConnectionManagerClientConnectionRequest, from which a
ManagedClientConnection can be obtained or the request can be
aborted.requestConnection in interface ClientConnectionManagerpublic void releaseConnection(ManagedClientConnection conn, long keepalive, TimeUnit tunit)
ClientConnectionManagerreleaseConnection in interface ClientConnectionManagerconn - the connection to releasekeepalive - the duration of time this connection is valid for reusetunit - the unit of time validDuration is measured inClientConnectionManager.closeExpiredConnections()public void shutdown()
ClientConnectionManagershutdown in interface ClientConnectionManagerpublic void closeIdleConnections(long idleTimeout,
TimeUnit tunit)
ClientConnectionManagercloseIdleConnections in interface ClientConnectionManageridleTimeout - the idle time of connections to be closedtunit - the unit for the idletimeClientConnectionManager.closeExpiredConnections()public void closeExpiredConnections()
ClientConnectionManagercloseExpiredConnections in interface ClientConnectionManagerpublic int getMaxTotal()
getMaxTotal in interface ConnPoolControl<HttpRoute>public void setMaxTotal(int max)
setMaxTotal in interface ConnPoolControl<HttpRoute>public int getDefaultMaxPerRoute()
getDefaultMaxPerRoute in interface ConnPoolControl<HttpRoute>public void setDefaultMaxPerRoute(int max)
setDefaultMaxPerRoute in interface ConnPoolControl<HttpRoute>public int getMaxPerRoute(HttpRoute route)
getMaxPerRoute in interface ConnPoolControl<HttpRoute>public void setMaxPerRoute(HttpRoute route, int max)
setMaxPerRoute in interface ConnPoolControl<HttpRoute>public PoolStats getTotalStats()
getTotalStats in interface ConnPoolControl<HttpRoute>public PoolStats getStats(HttpRoute route)
getStats in interface ConnPoolControl<HttpRoute>Copyright © 1999–2013 The Apache Software Foundation. All rights reserved.