org.apache.http.impl.conn

## Class BasicHttpClientConnectionManager

- java.lang.Object
- - org.apache.http.impl.conn.BasicHttpClientConnectionManager

- All Implemented Interfaces:
    Closeable ， AutoCloseable ， HttpClientConnectionManager

      @Contract(threading=SAFE_CONDITIONAL)
      public class BasicHttpClientConnectionManager
      extends Object
      implements HttpClientConnectionManager, Closeable

  单个连接的连接管理器。 此连接管理器仅维护一个活动连接。 即使这个类是完全线程安全的，它只能被一个执行线程使用，因为一次只能有一个线程可以一次租用连接。

  该连接管理器将努力重新使用具有相同`route`的后续请求的连接。 但是，如果持久连接的路由与连接请求的路由不匹配，则将关闭现有连接并为给定的路由打开它。 如果连接已经被分配`IllegalStateException`被抛出。

  该连接管理器实现应该在EJB容器内使用，而不是`PoolingHttpClientConnectionManager` 。

  从以下版本开始：
    4.3

- - ### 构造方法摘要

    构造方法
    Constructor and Description
    `BasicHttpClientConnectionManager()`
    `BasicHttpClientConnectionManager(HttpClientConnectionOperator httpClientConnectionOperator, HttpConnectionFactory<HttpRoute,ManagedHttpClientConnection> connFactory)`
    `BasicHttpClientConnectionManager(Lookup<ConnectionSocketFactory> socketFactoryRegistry)`
    `BasicHttpClientConnectionManager(Lookup<ConnectionSocketFactory> socketFactoryRegistry, HttpConnectionFactory<HttpRoute,ManagedHttpClientConnection> connFactory)`
    `BasicHttpClientConnectionManager(Lookup<ConnectionSocketFactory> socketFactoryRegistry, HttpConnectionFactory<HttpRoute,ManagedHttpClientConnection> connFactory, SchemePortResolver schemePortResolver, DnsResolver dnsResolver)`

  - ### 方法摘要

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()`
    `void` | `closeExpiredConnections()` 关闭池中的所有过期连接。
    `void` | `closeIdleConnections(long idletime, TimeUnit tunit)` 关闭池中的空闲连接。
    `void` | `connect(HttpClientConnection conn, HttpRoute route, int connectTimeout, HttpContext context)` 在直接路由的情况下将底层连接套接字连接到连接目标，或者通过代理（或多个代理）路由时将第一个代理跳转到第一个代理跳转。
    `protected void` | `finalize()`
    `ConnectionConfig` | `getConnectionConfig()`
    `SocketConfig` | `getSocketConfig()`
    `void` | `releaseConnection(HttpClientConnection conn, Object state, long keepalive, TimeUnit tunit)` 将连接释放给管理员，使其可以由其他用户重新使用。
    `ConnectionRequest` | `requestConnection(HttpRoute route, Object state)` 返回一个新的`ConnectionRequest` ，从中可以获得`HttpClientConnection`或请求可以中止。
    `void` | `routeComplete(HttpClientConnection conn, HttpRoute route, HttpContext context)` 将连接标记为完全建立，并完成所有中间跳。
    `void` | `setConnectionConfig(ConnectionConfig connConfig)`
    `void` | `setSocketConfig(SocketConfig socketConfig)`
    `void` | `shutdown()` 关闭此连接管理器并释放分配的资源。
    `void` | `upgrade(HttpClientConnection conn, HttpRoute route, HttpContext context)` 在将所有中间代理跳数执行 `CONNECT`方法后，将底层连接套接字升级到TLS / SSL（或其他分层协议）

    - ### Methods inherited from class java.lang.Object

      `clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### 构造方法详细信息

    - #### BasicHttpClientConnectionManager

          public BasicHttpClientConnectionManager(Lookup<ConnectionSocketFactory> socketFactoryRegistry,
                                          HttpConnectionFactory<HttpRoute,ManagedHttpClientConnection> connFactory,
                                          SchemePortResolver schemePortResolver,
                                          DnsResolver dnsResolver)

    - #### BasicHttpClientConnectionManager

          public BasicHttpClientConnectionManager(HttpClientConnectionOperator httpClientConnectionOperator,
                                          HttpConnectionFactory<HttpRoute,ManagedHttpClientConnection> connFactory)

      从以下版本开始：
        4.4

    - #### BasicHttpClientConnectionManager

          public BasicHttpClientConnectionManager(Lookup<ConnectionSocketFactory> socketFactoryRegistry,
                                          HttpConnectionFactory<HttpRoute,ManagedHttpClientConnection> connFactory)

    - #### BasicHttpClientConnectionManager

          public BasicHttpClientConnectionManager(Lookup<ConnectionSocketFactory> socketFactoryRegistry)

    - #### BasicHttpClientConnectionManager

          public BasicHttpClientConnectionManager()

  - ### 方法详细信息

    - #### finalize

          protected void finalize()
                           throws Throwable

      重写：
        `finalize`在 `Object`
      异常
        `Throwable`

    - #### close

          public void close()

      Specified by:
        `close`在接口 `Closeable`
      Specified by:
        `close`在接口 `AutoCloseable`

    - #### getSocketConfig

          public SocketConfig getSocketConfig()

    - #### setSocketConfig

          public void setSocketConfig(SocketConfig socketConfig)

    - #### getConnectionConfig

          public ConnectionConfig getConnectionConfig()

    - #### setConnectionConfig

          public void setConnectionConfig(ConnectionConfig connConfig)

    - #### requestConnection

          public final ConnectionRequest requestConnection(HttpRoute route,
                                            Object state)

      描述从接口`HttpClientConnectionManager`复制
      返回一个新的`ConnectionRequest` ，从中可以获得`HttpClientConnection`或请求可以中止。

      请注意，新分配的连接可以在关闭状态返回。 该连接的消费者负责通过致电`connect`来完全建立到连接目标的路由 ，以便直接连接到目标或第一代理跳，可选地，在已经执行`CONNECT`方法之后调用`upgrade`方法来升级连接中间代理跳，最后拨打`routeComplete`将路由标记为完全完成。

      Specified by:
        `requestConnection`在接口 `HttpClientConnectionManager`
      参数
        `route` - 所请求连接的HTTP路由。
        `state` - 连接的预期状态或 `null`如果连接不预期携带任何状态。

    - #### releaseConnection

          public void releaseConnection(HttpClientConnection conn,
                               Object state,
                               long keepalive,
                               TimeUnit tunit)

      描述从接口`HttpClientConnectionManager`复制
      将连接释放给管理员，使其可以由其他用户重新使用。 可选地，可以使用`validDuration`和`timeUnit`参数来定义管理器保持连接活动的`validDuration` `timeUnit` 。
      Specified by:
        `releaseConnection`在接口 `HttpClientConnectionManager`
      参数
        `conn` - 要发布的受管连接。
        `keepalive` - 此连接有效重用的持续时间。
        `tunit` - 时间单位。
      另请参见：
        `HttpClientConnectionManager.closeExpiredConnections()`

    - #### connect

          public void connect(HttpClientConnection conn,
                     HttpRoute route,
                     int connectTimeout,
                     HttpContext context)
                       throws IOException

      描述从接口`HttpClientConnectionManager`复制
      在直接路由的情况下将底层连接套接字连接到连接目标，或者通过代理（或多个代理）路由时将第一个代理跳转到第一个代理跳转。
      Specified by:
        `connect`在接口 `HttpClientConnectionManager`
      参数
        `conn` - 受管连接。
        `route` - 连接的路由。
        `connectTimeout` - 以毫秒为单位的连接超时。
        `context` - 实际的HTTP上下文。
      异常
        `IOException`

    - #### upgrade

          public void upgrade(HttpClientConnection conn,
                     HttpRoute route,
                     HttpContext context)
                       throws IOException

      描述从接口`HttpClientConnectionManager`复制
      在将所有中间代理跳数执行 `CONNECT`方法后，将底层连接套接字升级到TLS / SSL（或另一个分层协议）
      Specified by:
        `upgrade`在接口 `HttpClientConnectionManager`
      参数
        `conn` - 管理连接。
        `route` - 连接的路由。
        `context` - 实际的HTTP上下文。
      异常
        `IOException`

    - #### routeComplete

          public void routeComplete(HttpClientConnection conn,
                           HttpRoute route,
                           HttpContext context)
                             throws IOException

      描述从接口`HttpClientConnectionManager`复制
      将连接标记为完全建立，并完成所有中间跳。
      Specified by:
        `routeComplete`在接口 `HttpClientConnectionManager`
      参数
        `conn` - 受管连接。
        `route` - 连接的路由。
        `context` - 实际的HTTP上下文。
      异常
        `IOException`

    - #### closeExpiredConnections

          public void closeExpiredConnections()

      描述从接口`HttpClientConnectionManager`复制
      关闭池中的所有过期连接。

      在连接被释放时定义的时间段中尚未使用的池中的打开连接将被关闭。 目前分配的连接不受此方法的约束。 时间将以毫秒精度检查。

      Specified by:
        `closeExpiredConnections`在接口 `HttpClientConnectionManager`

    - #### closeIdleConnections

          public void closeIdleConnections(long idletime,
                                  TimeUnit tunit)

      描述从接口`HttpClientConnectionManager`复制
      关闭池中的空闲连接。

      在参数中给出的时间段中未使用的池中的打开连接将被关闭。 目前分配的连接不受此方法的约束。 时间将以毫秒精度检查

      所有过期的连接也将关闭。

      Specified by:
        `closeIdleConnections`在接口 `HttpClientConnectionManager`
      参数
        `idletime` - 要关闭连接的空闲时间
        `tunit` -为对所述单元 `idletime`
      另请参见：
        `HttpClientConnectionManager.closeExpiredConnections()`

    - #### shutdown

          public void shutdown()

      描述从接口`HttpClientConnectionManager`复制
      关闭此连接管理器并释放分配的资源。 这包括关闭所有连接，无论它们是否被使用。
      Specified by:
        `shutdown`在接口 `HttpClientConnectionManager`

Copyright © 1999–2017 The Apache Software Foundation. All rights reserved.

本帮助文档是使用 《谷歌翻译》翻译，请与英文版配合使用 by--QQ:654638585