@Contract(threading=SAFE_CONDITIONAL) public class PoolingHttpClientConnectionManager extends Object implements HttpClientConnectionManager, org.apache.hc.core5.pool.ConnPoolControl<HttpRoute>
ClientConnectionPoolManager maintains a pool of
ManagedHttpClientConnections 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 serviced by leasing
a connection from the pool rather than creating a new connection.
ClientConnectionPoolManager maintains a maximum limit of connection
on a per route basis and in total. Connection limits, however, can be adjusted
using ConnPoolControl methods.
Total time to live (TTL) set at construction time defines maximum life span of persistent connections regardless of their expiration setting. No persistent connection will be re-used past its TTL value.
| Modifier and Type | Field and Description |
|---|---|
static int |
DEFAULT_MAX_CONNECTIONS_PER_ROUTE |
static int |
DEFAULT_MAX_TOTAL_CONNECTIONS |
| Modifier | Constructor and Description |
|---|---|
|
PoolingHttpClientConnectionManager() |
protected |
PoolingHttpClientConnectionManager(HttpClientConnectionOperator httpClientConnectionOperator,
org.apache.hc.core5.pool.ManagedConnPool<HttpRoute,ManagedHttpClientConnection> pool,
org.apache.hc.core5.http.io.HttpConnectionFactory<ManagedHttpClientConnection> connFactory) |
|
PoolingHttpClientConnectionManager(HttpClientConnectionOperator httpClientConnectionOperator,
org.apache.hc.core5.pool.PoolConcurrencyPolicy poolConcurrencyPolicy,
org.apache.hc.core5.pool.PoolReusePolicy poolReusePolicy,
org.apache.hc.core5.util.TimeValue timeToLive,
org.apache.hc.core5.http.io.HttpConnectionFactory<ManagedHttpClientConnection> connFactory) |
|
PoolingHttpClientConnectionManager(org.apache.hc.core5.http.config.Registry<ConnectionSocketFactory> socketFactoryRegistry)
Deprecated.
|
|
PoolingHttpClientConnectionManager(org.apache.hc.core5.http.config.Registry<ConnectionSocketFactory> socketFactoryRegistry,
org.apache.hc.core5.http.io.HttpConnectionFactory<ManagedHttpClientConnection> connFactory)
Deprecated.
|
|
PoolingHttpClientConnectionManager(org.apache.hc.core5.http.config.Registry<ConnectionSocketFactory> socketFactoryRegistry,
org.apache.hc.core5.pool.PoolConcurrencyPolicy poolConcurrencyPolicy,
org.apache.hc.core5.pool.PoolReusePolicy poolReusePolicy,
org.apache.hc.core5.util.TimeValue timeToLive)
Deprecated.
|
|
PoolingHttpClientConnectionManager(org.apache.hc.core5.http.config.Registry<ConnectionSocketFactory> socketFactoryRegistry,
org.apache.hc.core5.pool.PoolConcurrencyPolicy poolConcurrencyPolicy,
org.apache.hc.core5.pool.PoolReusePolicy poolReusePolicy,
org.apache.hc.core5.util.TimeValue timeToLive,
org.apache.hc.core5.http.io.HttpConnectionFactory<ManagedHttpClientConnection> connFactory)
Deprecated.
|
|
PoolingHttpClientConnectionManager(org.apache.hc.core5.http.config.Registry<ConnectionSocketFactory> socketFactoryRegistry,
org.apache.hc.core5.pool.PoolConcurrencyPolicy poolConcurrencyPolicy,
org.apache.hc.core5.pool.PoolReusePolicy poolReusePolicy,
org.apache.hc.core5.util.TimeValue timeToLive,
SchemePortResolver schemePortResolver,
DnsResolver dnsResolver,
org.apache.hc.core5.http.io.HttpConnectionFactory<ManagedHttpClientConnection> connFactory)
Deprecated.
|
|
PoolingHttpClientConnectionManager(org.apache.hc.core5.http.config.Registry<ConnectionSocketFactory> socketFactoryRegistry,
org.apache.hc.core5.pool.PoolConcurrencyPolicy poolConcurrencyPolicy,
org.apache.hc.core5.util.TimeValue timeToLive,
org.apache.hc.core5.http.io.HttpConnectionFactory<ManagedHttpClientConnection> connFactory)
Deprecated.
|
| Modifier and Type | Method and Description |
|---|---|
void |
close() |
void |
close(org.apache.hc.core5.io.CloseMode closeMode) |
void |
closeExpired() |
void |
closeIdle(org.apache.hc.core5.util.TimeValue idleTime) |
void |
connect(ConnectionEndpoint endpoint,
org.apache.hc.core5.util.TimeValue timeout,
org.apache.hc.core5.http.protocol.HttpContext context)
Connects the endpoint to the initial hop (connection target in case
of a direct route or to the first proxy hop in case of a route via a proxy
or multiple proxies).
|
int |
getDefaultMaxPerRoute() |
org.apache.hc.core5.http.io.SocketConfig |
getDefaultSocketConfig()
Deprecated.
Use custom
setConnectionConfigResolver(Resolver) |
int |
getMaxPerRoute(HttpRoute route) |
int |
getMaxTotal() |
Set<HttpRoute> |
getRoutes() |
org.apache.hc.core5.pool.PoolStats |
getStats(HttpRoute route) |
org.apache.hc.core5.pool.PoolStats |
getTotalStats() |
org.apache.hc.core5.util.TimeValue |
getValidateAfterInactivity()
Deprecated.
|
boolean |
isClosed()
Method that can be called to determine whether the connection manager has been shut down and
is closed or not.
|
LeaseRequest |
lease(String id,
HttpRoute route,
Object state) |
LeaseRequest |
lease(String id,
HttpRoute route,
org.apache.hc.core5.util.Timeout requestTimeout,
Object state)
Returns a
LeaseRequest object which can be used to obtain
a ConnectionEndpoint to cancel the request by calling
Cancellable.cancel(). |
void |
release(ConnectionEndpoint endpoint,
Object state,
org.apache.hc.core5.util.TimeValue keepAlive)
Releases the endpoint back to the manager making it potentially
re-usable by other consumers.
|
void |
setConnectionConfigResolver(org.apache.hc.core5.function.Resolver<HttpRoute,ConnectionConfig> connectionConfigResolver)
Sets
Resolver of ConnectionConfig on a per route basis. |
void |
setDefaultConnectionConfig(ConnectionConfig config)
Sets the same
ConnectionConfig for all routes |
void |
setDefaultMaxPerRoute(int max) |
void |
setDefaultSocketConfig(org.apache.hc.core5.http.io.SocketConfig config)
Sets the same
SocketConfig for all routes |
void |
setDefaultTlsConfig(TlsConfig config)
Sets the same
ConnectionConfig for all hosts |
void |
setMaxPerRoute(HttpRoute route,
int max) |
void |
setMaxTotal(int max) |
void |
setSocketConfigResolver(org.apache.hc.core5.function.Resolver<HttpRoute,org.apache.hc.core5.http.io.SocketConfig> socketConfigResolver)
Sets
Resolver of SocketConfig on a per route basis. |
void |
setTlsConfigResolver(org.apache.hc.core5.function.Resolver<org.apache.hc.core5.http.HttpHost,TlsConfig> tlsConfigResolver)
Sets
Resolver of TlsConfig on a per host basis. |
void |
setValidateAfterInactivity(org.apache.hc.core5.util.TimeValue validateAfterInactivity)
Deprecated.
|
void |
upgrade(ConnectionEndpoint endpoint,
org.apache.hc.core5.http.protocol.HttpContext context)
Upgrades transport security of the given endpoint by using the TLS security protocol.
|
public static final int DEFAULT_MAX_TOTAL_CONNECTIONS
public static final int DEFAULT_MAX_CONNECTIONS_PER_ROUTE
public PoolingHttpClientConnectionManager()
@Deprecated public PoolingHttpClientConnectionManager(org.apache.hc.core5.http.config.Registry<ConnectionSocketFactory> socketFactoryRegistry)
PoolingHttpClientConnectionManagerBuilder@Deprecated public PoolingHttpClientConnectionManager(org.apache.hc.core5.http.config.Registry<ConnectionSocketFactory> socketFactoryRegistry, org.apache.hc.core5.http.io.HttpConnectionFactory<ManagedHttpClientConnection> connFactory)
PoolingHttpClientConnectionManagerBuilder@Deprecated public PoolingHttpClientConnectionManager(org.apache.hc.core5.http.config.Registry<ConnectionSocketFactory> socketFactoryRegistry, org.apache.hc.core5.pool.PoolConcurrencyPolicy poolConcurrencyPolicy, org.apache.hc.core5.util.TimeValue timeToLive, org.apache.hc.core5.http.io.HttpConnectionFactory<ManagedHttpClientConnection> connFactory)
PoolingHttpClientConnectionManagerBuilder@Deprecated public PoolingHttpClientConnectionManager(org.apache.hc.core5.http.config.Registry<ConnectionSocketFactory> socketFactoryRegistry, org.apache.hc.core5.pool.PoolConcurrencyPolicy poolConcurrencyPolicy, org.apache.hc.core5.pool.PoolReusePolicy poolReusePolicy, org.apache.hc.core5.util.TimeValue timeToLive)
PoolingHttpClientConnectionManagerBuilder@Deprecated public PoolingHttpClientConnectionManager(org.apache.hc.core5.http.config.Registry<ConnectionSocketFactory> socketFactoryRegistry, org.apache.hc.core5.pool.PoolConcurrencyPolicy poolConcurrencyPolicy, org.apache.hc.core5.pool.PoolReusePolicy poolReusePolicy, org.apache.hc.core5.util.TimeValue timeToLive, org.apache.hc.core5.http.io.HttpConnectionFactory<ManagedHttpClientConnection> connFactory)
PoolingHttpClientConnectionManagerBuilder@Deprecated public PoolingHttpClientConnectionManager(org.apache.hc.core5.http.config.Registry<ConnectionSocketFactory> socketFactoryRegistry, org.apache.hc.core5.pool.PoolConcurrencyPolicy poolConcurrencyPolicy, org.apache.hc.core5.pool.PoolReusePolicy poolReusePolicy, org.apache.hc.core5.util.TimeValue timeToLive, SchemePortResolver schemePortResolver, DnsResolver dnsResolver, org.apache.hc.core5.http.io.HttpConnectionFactory<ManagedHttpClientConnection> connFactory)
PoolingHttpClientConnectionManagerBuilder@Internal public PoolingHttpClientConnectionManager(HttpClientConnectionOperator httpClientConnectionOperator, org.apache.hc.core5.pool.PoolConcurrencyPolicy poolConcurrencyPolicy, org.apache.hc.core5.pool.PoolReusePolicy poolReusePolicy, org.apache.hc.core5.util.TimeValue timeToLive, org.apache.hc.core5.http.io.HttpConnectionFactory<ManagedHttpClientConnection> connFactory)
@Internal protected PoolingHttpClientConnectionManager(HttpClientConnectionOperator httpClientConnectionOperator, org.apache.hc.core5.pool.ManagedConnPool<HttpRoute,ManagedHttpClientConnection> pool, org.apache.hc.core5.http.io.HttpConnectionFactory<ManagedHttpClientConnection> connFactory)
public void close()
close in interface Closeableclose in interface AutoCloseablepublic void close(org.apache.hc.core5.io.CloseMode closeMode)
close in interface org.apache.hc.core5.io.ModalCloseablepublic LeaseRequest lease(String id, HttpRoute route, Object state)
public LeaseRequest lease(String id, HttpRoute route, org.apache.hc.core5.util.Timeout requestTimeout, Object state)
HttpClientConnectionManagerLeaseRequest object which can be used to obtain
a ConnectionEndpoint to cancel the request by calling
Cancellable.cancel().
Please note that newly allocated endpoints can be leased
disconnected. The consumer of the endpoint
is responsible for fully establishing the route to the endpoint target
by calling HttpClientConnectionManager.connect(ConnectionEndpoint, TimeValue, HttpContext)
in order to connect directly to the target or to the first proxy hop,
and optionally calling HttpClientConnectionManager.upgrade(ConnectionEndpoint, HttpContext) method
to upgrade the underlying transport to Transport Layer Security after having
executed a CONNECT method to all intermediate proxy hops.
lease in interface HttpClientConnectionManagerid - unique operation ID or null.route - HTTP route of the requested connection.requestTimeout - lease request timeout.state - expected state of the connection or null
if the connection is not expected to carry any state.public void release(ConnectionEndpoint endpoint, Object state, org.apache.hc.core5.util.TimeValue keepAlive)
HttpClientConnectionManagervalidDuration and timeUnit
parameters.release in interface HttpClientConnectionManagerendpoint - the managed endpoint.state - the new connection state of null if state-less.keepAlive - the duration of time this connection is valid for reuse.public void connect(ConnectionEndpoint endpoint, org.apache.hc.core5.util.TimeValue timeout, org.apache.hc.core5.http.protocol.HttpContext context) throws IOException
HttpClientConnectionManagerconnect in interface HttpClientConnectionManagerendpoint - the managed endpoint.timeout - connect timeout.context - the actual HTTP context.IOExceptionpublic void upgrade(ConnectionEndpoint endpoint, org.apache.hc.core5.http.protocol.HttpContext context) throws IOException
HttpClientConnectionManagerupgrade in interface HttpClientConnectionManagerendpoint - the managed endpoint.context - the actual HTTP context.IOExceptionpublic void closeIdle(org.apache.hc.core5.util.TimeValue idleTime)
closeIdle in interface org.apache.hc.core5.pool.ConnPoolControl<HttpRoute>public void closeExpired()
closeExpired in interface org.apache.hc.core5.pool.ConnPoolControl<HttpRoute>public Set<HttpRoute> getRoutes()
getRoutes in interface org.apache.hc.core5.pool.ConnPoolControl<HttpRoute>public int getMaxTotal()
getMaxTotal in interface org.apache.hc.core5.pool.ConnPoolControl<HttpRoute>public void setMaxTotal(int max)
setMaxTotal in interface org.apache.hc.core5.pool.ConnPoolControl<HttpRoute>public int getDefaultMaxPerRoute()
getDefaultMaxPerRoute in interface org.apache.hc.core5.pool.ConnPoolControl<HttpRoute>public void setDefaultMaxPerRoute(int max)
setDefaultMaxPerRoute in interface org.apache.hc.core5.pool.ConnPoolControl<HttpRoute>public int getMaxPerRoute(HttpRoute route)
getMaxPerRoute in interface org.apache.hc.core5.pool.ConnPoolControl<HttpRoute>public void setMaxPerRoute(HttpRoute route, int max)
setMaxPerRoute in interface org.apache.hc.core5.pool.ConnPoolControl<HttpRoute>public org.apache.hc.core5.pool.PoolStats getTotalStats()
getTotalStats in interface org.apache.hc.core5.pool.ConnPoolStats<HttpRoute>public org.apache.hc.core5.pool.PoolStats getStats(HttpRoute route)
getStats in interface org.apache.hc.core5.pool.ConnPoolStats<HttpRoute>public void setDefaultSocketConfig(org.apache.hc.core5.http.io.SocketConfig config)
SocketConfig for all routespublic void setSocketConfigResolver(org.apache.hc.core5.function.Resolver<HttpRoute,org.apache.hc.core5.http.io.SocketConfig> socketConfigResolver)
Resolver of SocketConfig on a per route basis.public void setDefaultConnectionConfig(ConnectionConfig config)
ConnectionConfig for all routespublic void setConnectionConfigResolver(org.apache.hc.core5.function.Resolver<HttpRoute,ConnectionConfig> connectionConfigResolver)
Resolver of ConnectionConfig on a per route basis.public void setDefaultTlsConfig(TlsConfig config)
ConnectionConfig for all hostspublic void setTlsConfigResolver(org.apache.hc.core5.function.Resolver<org.apache.hc.core5.http.HttpHost,TlsConfig> tlsConfigResolver)
Resolver of TlsConfig on a per host basis.@Deprecated public org.apache.hc.core5.http.io.SocketConfig getDefaultSocketConfig()
setConnectionConfigResolver(Resolver)@Deprecated public org.apache.hc.core5.util.TimeValue getValidateAfterInactivity()
setConnectionConfigResolver(Resolver).@Deprecated public void setValidateAfterInactivity(org.apache.hc.core5.util.TimeValue validateAfterInactivity)
setConnectionConfigResolver(Resolver).lease(String, HttpRoute, Object) leased} to the consumer.
Negative values passed to this method disable connection validation. This check helps
detect connections that have become stale (half-closed) while kept inactive in the pool.public boolean isClosed()
true if the connection manager has been shut down and is closed, otherwise
return false.Copyright © 1999–2021 The Apache Software Foundation. All rights reserved.