Top Description Inners Fields Constructors Methods
org.apache.hc.client5.http.impl.io

public Class PoolingHttpClientConnectionManager

extends Object
implements HttpClientConnectionManager, ConnPoolControl<HttpRoute>
Class Inheritance
All Implemented Interfaces
org.apache.hc.core5.pool.ConnPoolControl, org.apache.hc.core5.pool.ConnPoolStats, org.apache.hc.client5.http.io.HttpClientConnectionManager, org.apache.hc.core5.io.ModalCloseable, java.io.Closeable, java.lang.AutoCloseable
Annotations
@Contract
threading:SAFE_CONDITIONAL
Imports
java.io.IOException, java.util.Set, java.util.concurrent.ExecutionException, .Future, .TimeoutException, java.util.concurrent.atomic.AtomicBoolean, .AtomicReference, org.apache.hc.client5.http.DnsResolver, .HttpRoute, .SchemePortResolver, org.apache.hc.client5.http.config.ConnectionConfig, .TlsConfig, org.apache.hc.client5.http.impl.ConnPoolSupport, .ConnectionShutdownException, .PrefixedIncrementingId, org.apache.hc.client5.http.io.ConnectionEndpoint, .HttpClientConnectionManager, .HttpClientConnectionOperator, .LeaseRequest, .ManagedHttpClientConnection, org.apache.hc.client5.http.socket.ConnectionSocketFactory, .PlainConnectionSocketFactory, org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory, org.apache.hc.core5.annotation.Contract, .Internal, .ThreadingBehavior, org.apache.hc.core5.function.Resolver, org.apache.hc.core5.http.ClassicHttpRequest, .ClassicHttpResponse, .HttpException, .HttpHost, .URIScheme, org.apache.hc.core5.http.config.Registry, .RegistryBuilder, org.apache.hc.core5.http.impl.io.HttpRequestExecutor, org.apache.hc.core5.http.io.HttpConnectionFactory, .SocketConfig, org.apache.hc.core5.http.protocol.HttpContext, org.apache.hc.core5.io.CloseMode, org.apache.hc.core5.pool.ConnPoolControl, .LaxConnPool, .ManagedConnPool, .PoolConcurrencyPolicy, .PoolEntry, .PoolReusePolicy, .PoolStats, .StrictConnPool, org.apache.hc.core5.util.Args, .Asserts, .Deadline, .Identifiable, .TimeValue, .Timeout, org.slf4j.Logger, .LoggerFactory

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.

Since
4.3

Nested and Inner Type Summary

Modifier and TypeClass and Description
pack-priv static class

Field Summary

Modifier and TypeField and Description
private final AtomicBoolean
private volatile Resolver<HttpRoute, ConnectionConfig>
private final HttpClientConnectionOperator
private final HttpConnectionFactory<ManagedHttpClientConnection>
public static final int
public static final int
private static final PrefixedIncrementingId
private static final Logger
private final ManagedConnPool<HttpRoute, ManagedHttpClientConnection>
private volatile Resolver<HttpRoute, SocketConfig>
private volatile Resolver<HttpHost, TlsConfig>

Constructor Summary

AccessConstructor and Description
public
public
public
public
PoolingHttpClientConnectionManager(final Registry<ConnectionSocketFactory> socketFactoryRegistry, final PoolConcurrencyPolicy poolConcurrencyPolicy, final TimeValue timeToLive, final HttpConnectionFactory<ManagedHttpClientConnection> connFactory)

public
PoolingHttpClientConnectionManager(final Registry<ConnectionSocketFactory> socketFactoryRegistry, final PoolConcurrencyPolicy poolConcurrencyPolicy, final PoolReusePolicy poolReusePolicy, final TimeValue timeToLive)

public
PoolingHttpClientConnectionManager(final Registry<ConnectionSocketFactory> socketFactoryRegistry, final PoolConcurrencyPolicy poolConcurrencyPolicy, final PoolReusePolicy poolReusePolicy, final TimeValue timeToLive, final HttpConnectionFactory<ManagedHttpClientConnection> connFactory)

public
PoolingHttpClientConnectionManager(final Registry<ConnectionSocketFactory> socketFactoryRegistry, final PoolConcurrencyPolicy poolConcurrencyPolicy, final PoolReusePolicy poolReusePolicy, final TimeValue timeToLive, final SchemePortResolver schemePortResolver, final DnsResolver dnsResolver, final HttpConnectionFactory<ManagedHttpClientConnection> connFactory)

protected
PoolingHttpClientConnectionManager(final HttpClientConnectionOperator httpClientConnectionOperator, final PoolConcurrencyPolicy poolConcurrencyPolicy, final PoolReusePolicy poolReusePolicy, final TimeValue timeToLive, final HttpConnectionFactory<ManagedHttpClientConnection> connFactory)

protected

Method Summary

Modifier and TypeMethod and Description
private PoolingHttpClientConnectionManager.InternalConnectionEndpoint
cast(final ConnectionEndpoint endpoint)

public void
close()

Implements java.io.Closeable.close.

Closes this stream and releases any system resources associated with it.
public void
close(final CloseMode
How to close the receiver.
closeMode
)

Implements org.apache.hc.core5.io.ModalCloseable.close.

Closes this process or endpoint and releases any system resources associated with it.
public void
public void
pack-priv void
public void
connect(final ConnectionEndpoint
the managed endpoint.
endpoint
,
final TimeValue
connect timeout.
timeout
,
final HttpContext
the actual HTTP context.
context
)

Implements org.apache.hc.client5.http.io.HttpClientConnectionManager.connect.

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).
public int
public SocketConfig
public int
public int
public Set<HttpRoute>
public PoolStats
public PoolStats
public TimeValue
public LeaseRequest
lease(final String id, final HttpRoute route, final Object state)

public LeaseRequest
lease(final String
unique operation ID or null.
id
,
final HttpRoute
HTTP route of the requested connection.
route
,
final Timeout
lease request timeout.
requestTimeout
,
final Object
expected state of the connection or null if the connection is not expected to carry any state.
state
)

Implements org.apache.hc.client5.http.io.HttpClientConnectionManager.lease.

Returns a LeaseRequest object which can be used to obtain a ConnectionEndpoint to cancel the request by calling LeaseRequest#cancel().
public void
release(final ConnectionEndpoint
the managed endpoint.
endpoint
,
final Object
the new connection state of null if state-less.
state
,
final TimeValue
the duration of time this connection is valid for reuse.
keepAlive
)

Implements org.apache.hc.client5.http.io.HttpClientConnectionManager.release.

Releases the endpoint back to the manager making it potentially re-usable by other consumers.
private ConnectionConfig
private SocketConfig
private TlsConfig
private TimeValue
public void
setConnectionConfigResolver(final Resolver<HttpRoute, ConnectionConfig> connectionConfigResolver)

Sets Resolver of ConnectionConfig on a per route basis.

public void
setDefaultConnectionConfig(final ConnectionConfig config)

Sets the same ConnectionConfig for all routes

public void
public void
setDefaultSocketConfig(final SocketConfig config)

Sets the same SocketConfig for all routes

public void
setDefaultTlsConfig(final TlsConfig config)

Sets the same ConnectionConfig for all hosts

public void
public void
public void
setSocketConfigResolver(final Resolver<HttpRoute, SocketConfig> socketConfigResolver)

Sets Resolver of SocketConfig on a per route basis.

public void
setTlsConfigResolver(final Resolver<HttpHost, TlsConfig> tlsConfigResolver)

Sets Resolver of TlsConfig on a per host basis.

public void
setValidateAfterInactivity(final TimeValue validateAfterInactivity)

Defines period of inactivity after which persistent connections must be re-validated prior to being lease(String, HttpRoute, Object) leased} to the consumer.
public void
upgrade(final ConnectionEndpoint
the managed endpoint.
endpoint
,
final HttpContext
the actual HTTP context.
context
)

Implements org.apache.hc.client5.http.io.HttpClientConnectionManager.upgrade.

Upgrades transport security of the given endpoint by using the TLS security protocol.
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait