@Contract(threading=SAFE_CONDITIONAL) public class PoolingHttpClientConnectionManager extends Object implements HttpClientConnectionManager, ConnPoolControl<HttpRoute>, Closeable
ClientConnectionPoolManager保持池HttpClientConnection个 S和能够服务从多个执行线程的连接请求。
连接按每个路线合并。
对于已经具有持续连接以在池中可用的路由的请求将是通过从池中租用连接而不是创建全新连接来进行的服务。
ClientConnectionPoolManager在每个路由基础上和总共维护连接的最大限制。 默认情况下,此实施方案将在每个给定路由上创建不超过2个并发连接,并且不再有20个连接。 对于许多现实世界的应用程序,这些限制可能被证明是太限制的,特别是如果他们使用HTTP作为其服务的传输协议。 然而,连接限制可以使用ConnPoolControl方法进行调整。
在施工时设置的总生存时间(TTL)定义持久连接的最大使用寿命,而不管其到期设置如何。 没有持续连接将重新使用超过其TTL值。
版本4.4中更改了过时连接的处理。 以前,代码将在重新使用之前默认检查每个连接。 如果从上一次使用连接起的时间超过已设置的超时时,代码现在只检查连接。 默认超时设置为2000ms
public PoolingHttpClientConnectionManager()
public PoolingHttpClientConnectionManager(long timeToLive,
TimeUnit tunit) public PoolingHttpClientConnectionManager(Registry<ConnectionSocketFactory> socketFactoryRegistry)
public PoolingHttpClientConnectionManager(Registry<ConnectionSocketFactory> socketFactoryRegistry, DnsResolver dnsResolver)
public PoolingHttpClientConnectionManager(Registry<ConnectionSocketFactory> socketFactoryRegistry, HttpConnectionFactory<HttpRoute,ManagedHttpClientConnection> connFactory)
public PoolingHttpClientConnectionManager(HttpConnectionFactory<HttpRoute,ManagedHttpClientConnection> connFactory)
public PoolingHttpClientConnectionManager(Registry<ConnectionSocketFactory> socketFactoryRegistry, HttpConnectionFactory<HttpRoute,ManagedHttpClientConnection> connFactory, DnsResolver dnsResolver)
public PoolingHttpClientConnectionManager(Registry<ConnectionSocketFactory> socketFactoryRegistry, HttpConnectionFactory<HttpRoute,ManagedHttpClientConnection> connFactory, SchemePortResolver schemePortResolver, DnsResolver dnsResolver, long timeToLive, TimeUnit tunit)
public PoolingHttpClientConnectionManager(HttpClientConnectionOperator httpClientConnectionOperator, HttpConnectionFactory<HttpRoute,ManagedHttpClientConnection> connFactory, long timeToLive, TimeUnit tunit)
public void close()
close在接口
Closeable
close在接口
AutoCloseable
public ConnectionRequest requestConnection(HttpRoute route, Object state)
HttpClientConnectionManager复制
ConnectionRequest ,从中可以获得HttpClientConnection或请求可以中止。
请注意,新分配的连接可以在关闭状态返回。 该连接的消费者负责通过呼叫connect完全建立到连接目标的路由 ,以便直接连接到目标或第一代理跳,可选地,在已经执行CONNECT方法之后,呼叫upgrade方法来升级连接中间代理跳,最后呼叫routeComplete将路由标记为完全完成。
requestConnection在接口
HttpClientConnectionManager
route - 所请求连接的HTTP路由。
state - 连接的预期状态或
null如果连接不预期携带任何状态。
protected HttpClientConnection leaseConnection(Future<org.apache.http.impl.conn.CPoolEntry> future, long timeout, TimeUnit tunit) throws InterruptedException, ExecutionException, ConnectionPoolTimeoutException
public void releaseConnection(HttpClientConnection managedConn, Object state, long keepalive, TimeUnit tunit)
HttpClientConnectionManager复制
validDuration和timeUnit参数来定义管理员保持连接活动的validDuration timeUnit 。
releaseConnection在接口
HttpClientConnectionManager
managedConn - 要发布的受管连接。
keepalive - 此连接有效重用的持续时间。
tunit - 时间单位。
HttpClientConnectionManager.closeExpiredConnections()
public void connect(HttpClientConnection managedConn, HttpRoute route, int connectTimeout, HttpContext context) throws IOException
HttpClientConnectionManager复制
connect在接口
HttpClientConnectionManager
managedConn - 受管连接。
route - 连接的路由。
connectTimeout - 以毫秒为单位的连接超时。
context - 实际的HTTP上下文。
IOException
public void upgrade(HttpClientConnection managedConn, HttpRoute route, HttpContext context) throws IOException
HttpClientConnectionManager复制
CONNECT方法后,将底层连接套接字升级到TLS / SSL(或其他分层协议)
upgrade在接口
HttpClientConnectionManager
managedConn - 受管连接。
route - 连接的路由。
context - 实际的HTTP上下文。
IOException
public void routeComplete(HttpClientConnection managedConn, HttpRoute route, HttpContext context) throws IOException
HttpClientConnectionManager复制
routeComplete在接口
HttpClientConnectionManager
managedConn - 被管理的连接。
route - 连接的路由。
context - 实际的HTTP上下文。
IOException
public void shutdown()
HttpClientConnectionManager复制
shutdown在接口
HttpClientConnectionManager
public void closeIdleConnections(long idleTimeout,
TimeUnit tunit)
HttpClientConnectionManager复制
在参数中给出的时间段中未使用的池中的打开连接将被关闭。 目前分配的连接不受此方法的约束。 时间将以毫秒精度检查
所有过期的连接也将关闭。
closeIdleConnections在接口
HttpClientConnectionManager
idleTimeout - 关闭连接的空闲时间
tunit -为对所述单元
idletime
HttpClientConnectionManager.closeExpiredConnections()
public void closeExpiredConnections()
HttpClientConnectionManager复制
在连接被释放时定义的时间段中尚未使用的池中的打开连接将被关闭。 目前分配的连接不受此方法的约束。 时间将以毫秒精度检查。
closeExpiredConnections在接口
HttpClientConnectionManager
protected void enumAvailable(PoolEntryCallback<HttpRoute,ManagedHttpClientConnection> callback)
protected void enumLeased(PoolEntryCallback<HttpRoute,ManagedHttpClientConnection> callback)
public int getMaxTotal()
getMaxTotal在接口
ConnPoolControl<HttpRoute>
public void setMaxTotal(int max)
setMaxTotal在接口
ConnPoolControl<HttpRoute>
public int getDefaultMaxPerRoute()
getDefaultMaxPerRoute在接口
ConnPoolControl<HttpRoute>
public void setDefaultMaxPerRoute(int max)
setDefaultMaxPerRoute在接口
ConnPoolControl<HttpRoute>
public int getMaxPerRoute(HttpRoute route)
getMaxPerRoute在接口
ConnPoolControl<HttpRoute>
public void setMaxPerRoute(HttpRoute route, int max)
setMaxPerRoute在接口
ConnPoolControl<HttpRoute>
public PoolStats getTotalStats()
getTotalStats在接口
ConnPoolControl<HttpRoute>
public PoolStats getStats(HttpRoute route)
getStats在接口
ConnPoolControl<HttpRoute>
public SocketConfig getDefaultSocketConfig()
public void setDefaultSocketConfig(SocketConfig defaultSocketConfig)
public ConnectionConfig getDefaultConnectionConfig()
public void setDefaultConnectionConfig(ConnectionConfig defaultConnectionConfig)
public SocketConfig getSocketConfig(HttpHost host)
public void setSocketConfig(HttpHost host, SocketConfig socketConfig)
public ConnectionConfig getConnectionConfig(HttpHost host)
public void setConnectionConfig(HttpHost host, ConnectionConfig connectionConfig)
public int getValidateAfterInactivity()
setValidateAfterInactivity(int)
public void setValidateAfterInactivity(int ms)
Copyright © 1999–2017 The Apache Software Foundation. All rights reserved.