Class MultiThreadedHttpConnectionManager

java.lang.Object
edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.MultiThreadedHttpConnectionManager
All Implemented Interfaces:
HttpConnectionManager

public class MultiThreadedHttpConnectionManager extends Object implements HttpConnectionManager
Manages a set of HttpConnections for various HostConfigurations.
Since:
2.0
  • Field Details

    • DEFAULT_MAX_HOST_CONNECTIONS

      public static final int DEFAULT_MAX_HOST_CONNECTIONS
      The default maximum number of connections allowed per host
      See Also:
    • DEFAULT_MAX_TOTAL_CONNECTIONS

      public static final int DEFAULT_MAX_TOTAL_CONNECTIONS
      The default maximum number of connections allowed overall
      See Also:
  • Constructor Details

    • MultiThreadedHttpConnectionManager

      public MultiThreadedHttpConnectionManager()
      No-args constructor
  • Method Details

    • 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

      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()
      Gets the staleCheckingEnabled value to be set on HttpConnections that are created.
      Returns:
      true if stale checking will be enabled on HttpConnections
      See Also:
    • setConnectionStaleCheckingEnabled

      public void setConnectionStaleCheckingEnabled(boolean connectionStaleCheckingEnabled)
      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:
    • setMaxConnectionsPerHost

      public void setMaxConnectionsPerHost(int maxHostConnections)
      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()
      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)
      Sets the maximum number of connections allowed for this connection manager.
      Parameters:
      maxTotalConnections - the maximum number of connections allowed
    • getMaxTotalConnections

      public int getMaxTotalConnections()
      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:
    • 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:
    • 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:
    • 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)
      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.
      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:
    • 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:
    • setParams

      public void setParams(HttpConnectionManagerParams params)
      Assigns parameters for this connection manager.
      Specified by:
      setParams in interface HttpConnectionManager
      Since:
      3.0
      See Also: