MultiThreadedHttpConnectionManager (HttpClient Library (Version 3.1))
Date: 2016-03-09

org.apache.commons.httpclient

## Class MultiThreadedHttpConnectionManager

- java.lang.Object
- - org.apache.commons.httpclient.MultiThreadedHttpConnectionManager

- All Implemented Interfaces:
    HttpConnectionManager

      public class MultiThreadedHttpConnectionManager
      extends java.lang.Object
      implements HttpConnectionManager

  Manages a set of HttpConnections for various HostConfigurations.
  Since:
    2.0
  Author:
    Michael Becke, Eric Johnson, Mike Bowler, Carl A. Dunham

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `DEFAULT_MAX_HOST_CONNECTIONS` The default maximum number of connections allowed per host
    `static int` | `DEFAULT_MAX_TOTAL_CONNECTIONS` The default maximum number of connections allowed overall

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MultiThreadedHttpConnectionManager()` No-args constructor

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `closeIdleConnections(long idleTimeout)` Closes connections that have been idle for at least the given amount of time.
    `void` | `deleteClosedConnections()` Deletes all closed connections.
    `HttpConnection` | `getConnection(HostConfiguration hostConfiguration)` Gets an HttpConnection for a given host configuration.
    `HttpConnection` | `getConnection(HostConfiguration hostConfiguration, long timeout)` Deprecated. Use #getConnectionWithTimeout(HostConfiguration, long)
    `int` | `getConnectionsInPool()` Gets the total number of pooled connections.
    `int` | `getConnectionsInPool(HostConfiguration hostConfiguration)` Gets the total number of pooled connections for the given host configuration.
    `int` | `getConnectionsInUse()` Deprecated. Use `getConnectionsInPool()`
    `int` | `getConnectionsInUse(HostConfiguration hostConfiguration)` Deprecated. Use `getConnectionsInPool(HostConfiguration)`
    `HttpConnection` | `getConnectionWithTimeout(HostConfiguration hostConfiguration, long timeout)` Gets a connection or waits if one is not available.
    `int` | `getMaxConnectionsPerHost()` Deprecated. Use `HttpConnectionManagerParams.getDefaultMaxConnectionsPerHost()`, `HttpConnectionManager.getParams()`.
    `int` | `getMaxTotalConnections()` Deprecated. Use `HttpConnectionManagerParams.getMaxTotalConnections()`, `HttpConnectionManager.getParams()`.
    `HttpConnectionManagerParams` | `getParams()` Returns `parameters` associated with this connection manager.
    `boolean` | `isConnectionStaleCheckingEnabled()` Deprecated. Use `HttpConnectionParams.isStaleCheckingEnabled()`, `HttpConnectionManager.getParams()`.
    `void` | `releaseConnection(HttpConnection conn)` Make the given HttpConnection available for use by other requests.
    `void` | `setConnectionStaleCheckingEnabled(boolean connectionStaleCheckingEnabled)` Deprecated. Use `HttpConnectionParams.setStaleCheckingEnabled(boolean)`, `HttpConnectionManager.getParams()`.
    `void` | `setMaxConnectionsPerHost(int maxHostConnections)` Deprecated. Use `HttpConnectionManagerParams.setDefaultMaxConnectionsPerHost(int)`, `HttpConnectionManager.getParams()`.
    `void` | `setMaxTotalConnections(int maxTotalConnections)` Deprecated. Use `HttpConnectionManagerParams.setMaxTotalConnections(int)`, `HttpConnectionManager.getParams()`.
    `void` | `setParams(HttpConnectionManagerParams params)` Assigns `parameters` for this connection manager.
    `void` | `shutdown()` Shuts down the connection manager and releases all resources.
    `static void` | `shutdownAll()` Shuts down and cleans up resources used by all instances of MultiThreadedHttpConnectionManager.

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

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

- - ### Field Detail

    - #### DEFAULT_MAX_HOST_CONNECTIONS

          public static final int DEFAULT_MAX_HOST_CONNECTIONS

      The default maximum number of connections allowed per host
      See Also:
        Constant Field Values

    - #### DEFAULT_MAX_TOTAL_CONNECTIONS

          public static final int DEFAULT_MAX_TOTAL_CONNECTIONS

      The default maximum number of connections allowed overall
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### MultiThreadedHttpConnectionManager

          public MultiThreadedHttpConnectionManager()

      No-args constructor

  - ### Method Detail

    - #### shutdownAll

          public static void shutdownAll()

      Shuts down and cleans up resources used by all instances of MultiThreadedHttpConnectionManager. All static resources are released, all threads are stopped, and `shutdown()` is called on all live instances of MultiThreadedHttpConnectionManager.
      See Also:
        `shutdown()`

    - #### shutdown

          public void shutdown()

      Shuts down the connection manager and releases all resources. All connections associated with this class will be closed and released.

      The connection manager can no longer be used once shut down.

      Calling this method more than once will have no effect.

    - #### isConnectionStaleCheckingEnabled

          public boolean isConnectionStaleCheckingEnabled()

      Deprecated. Use `HttpConnectionParams.isStaleCheckingEnabled()`, `HttpConnectionManager.getParams()`.
      Gets the staleCheckingEnabled value to be set on HttpConnections that are created.
      Returns:
        `true` if stale checking will be enabled on HttpConnections
      See Also:
        `HttpConnection.isStaleCheckingEnabled()`

    - #### setConnectionStaleCheckingEnabled

          public void setConnectionStaleCheckingEnabled(boolean connectionStaleCheckingEnabled)

      Deprecated. Use `HttpConnectionParams.setStaleCheckingEnabled(boolean)`, `HttpConnectionManager.getParams()`.
      Sets the staleCheckingEnabled value to be set on HttpConnections that are created.
      Parameters:
        `connectionStaleCheckingEnabled` - `true` if stale checking will be enabled on HttpConnections
      See Also:
        `HttpConnection.setStaleCheckingEnabled(boolean)`

    - #### setMaxConnectionsPerHost

          public void setMaxConnectionsPerHost(int maxHostConnections)

      Deprecated. Use `HttpConnectionManagerParams.setDefaultMaxConnectionsPerHost(int)`, `HttpConnectionManager.getParams()`.
      Sets the maximum number of connections allowed for a given HostConfiguration. Per RFC 2616 section 8.1.4, this value defaults to 2.
      Parameters:
        `maxHostConnections` - the number of connections allowed for each hostConfiguration

    - #### getMaxConnectionsPerHost

          public int getMaxConnectionsPerHost()

      Deprecated. Use `HttpConnectionManagerParams.getDefaultMaxConnectionsPerHost()`, `HttpConnectionManager.getParams()`.
      Gets the maximum number of connections allowed for a given hostConfiguration.
      Returns:
        The maximum number of connections allowed for a given hostConfiguration.

    - #### setMaxTotalConnections

          public void setMaxTotalConnections(int maxTotalConnections)

      Deprecated. Use `HttpConnectionManagerParams.setMaxTotalConnections(int)`, `HttpConnectionManager.getParams()`.
      Sets the maximum number of connections allowed for this connection manager.
      Parameters:
        `maxTotalConnections` - the maximum number of connections allowed

    - #### getMaxTotalConnections

          public int getMaxTotalConnections()

      Deprecated. Use `HttpConnectionManagerParams.getMaxTotalConnections()`, `HttpConnectionManager.getParams()`.
      Gets the maximum number of connections allowed for this connection manager.
      Returns:
        The maximum number of connections allowed

    - #### getConnection

          public HttpConnection getConnection(HostConfiguration hostConfiguration)

      Description copied from interface: `HttpConnectionManager`
      Gets an HttpConnection for a given host configuration. If a connection is not available this method will block until one is. The connection manager should be registered with any HttpConnection that is created.
      Specified by:
        `getConnection` in interface `HttpConnectionManager`
      Parameters:
        `hostConfiguration` - the host configuration to use to configure the connection
      Returns:
        an HttpConnection for the given configuration
      See Also:
        `HttpConnectionManager.getConnection(HostConfiguration)`

    - #### getConnectionWithTimeout

          public HttpConnection getConnectionWithTimeout(HostConfiguration hostConfiguration,
                                                long timeout)
                                                  throws ConnectionPoolTimeoutException

      Gets a connection or waits if one is not available. A connection is available if one exists that is not being used or if fewer than maxHostConnections have been created in the connectionPool, and fewer than maxTotalConnections have been created in all connectionPools.
      Specified by:
        `getConnectionWithTimeout` in interface `HttpConnectionManager`
      Parameters:
        `hostConfiguration` - The host configuration specifying the connection details.
        `timeout` - the number of milliseconds to wait for a connection, 0 to wait indefinitely
      Returns:
        HttpConnection an available connection
      Throws:
        `HttpException` - if a connection does not become available in 'timeout' milliseconds
        `ConnectionPoolTimeoutException` - if no connection becomes available before the timeout expires
      Since:
        3.0
      See Also:
        `HttpConnection.setHttpConnectionManager(HttpConnectionManager)`

    - #### getConnection

          public HttpConnection getConnection(HostConfiguration hostConfiguration,
                                     long timeout)
                                       throws HttpException

      Deprecated. Use #getConnectionWithTimeout(HostConfiguration, long)
      Description copied from interface: `HttpConnectionManager`
      Gets an HttpConnection for a given host configuration. If a connection is not available, this method will block for at most the specified number of milliseconds or until a connection becomes available. The connection manager should be registered with any HttpConnection that is created.
      Specified by:
        `getConnection` in interface `HttpConnectionManager`
      Parameters:
        `hostConfiguration` - the host configuration to use to configure the connection
        `timeout` - - the time (in milliseconds) to wait for a connection to become available, 0 to specify an infinite timeout
      Returns:
        an HttpConnection for the given configuraiton
      Throws:
        `HttpException` - if no connection becomes available before the timeout expires
      See Also:
        `HttpConnectionManager.getConnection(HostConfiguration, long)`

    - #### getConnectionsInPool

          public int getConnectionsInPool(HostConfiguration hostConfiguration)

      Gets the total number of pooled connections for the given host configuration. This is the total number of connections that have been created and are still in use by this connection manager for the host configuration. This value will not exceed the `maximum number of connections per host`.
      Parameters:
        `hostConfiguration` - The host configuration
      Returns:
        The total number of pooled connections

    - #### getConnectionsInPool

          public int getConnectionsInPool()

      Gets the total number of pooled connections. This is the total number of connections that have been created and are still in use by this connection manager. This value will not exceed the `maximum number of connections`.
      Returns:
        the total number of pooled connections

    - #### getConnectionsInUse

          public int getConnectionsInUse(HostConfiguration hostConfiguration)

      Deprecated. Use `getConnectionsInPool(HostConfiguration)`
      Gets the number of connections in use for this configuration.
      Parameters:
        `hostConfiguration` - the key that connections are tracked on
      Returns:
        the number of connections in use

    - #### getConnectionsInUse

          public int getConnectionsInUse()

      Deprecated. Use `getConnectionsInPool()`
      Gets the total number of connections in use.
      Returns:
        the total number of connections in use

    - #### deleteClosedConnections

          public void deleteClosedConnections()

      Deletes all closed connections. Only connections currently owned by the connection manager are processed.
      Since:
        3.0
      See Also:
        `HttpConnection.isOpen()`

    - #### closeIdleConnections

          public void closeIdleConnections(long idleTimeout)

      Description copied from interface: `HttpConnectionManager`
      Closes connections that have been idle for at least the given amount of time. Only connections that are currently owned, not checked out, are subject to idle timeouts.
      Specified by:
        `closeIdleConnections` in interface `HttpConnectionManager`
      Parameters:
        `idleTimeout` - the minimum idle time, in milliseconds, for connections to be closed
      Since:
        3.0

    - #### releaseConnection

          public void releaseConnection(HttpConnection conn)

      Make the given HttpConnection available for use by other requests. If another thread is blocked in getConnection() that could use this connection, it will be woken up.
      Specified by:
        `releaseConnection` in interface `HttpConnectionManager`
      Parameters:
        `conn` - the HttpConnection to make available.

    - #### getParams

          public HttpConnectionManagerParams getParams()

      Returns `parameters` associated with this connection manager.
      Specified by:
        `getParams` in interface `HttpConnectionManager`
      Since:
        3.0
      See Also:
        `HttpConnectionManagerParams`

    - #### setParams

          public void setParams(HttpConnectionManagerParams params)

      Assigns `parameters` for this connection manager.
      Specified by:
        `setParams` in interface `HttpConnectionManager`
      Since:
        3.0
      See Also:
        `HttpConnectionManagerParams`

Copyright (c) 1999-2005 - Apache Software Foundation