Class ConnectionPool

  • All Implemented Interfaces:
    Closeable, AutoCloseable, LdapClient

    public final class ConnectionPool
    extends Object
    implements LdapClient
    A connection pool which maintains a cache of client sockets with a configurable core pool size, maximum size, and expiration policy.

    When connection pool is no longer needed it must be explicitly closed in order to close any remaining pooled connections.

    Since pooled connections are re-used, applications must use operations such as binds and StartTLS with extreme caution.

    Trying to get a connection when the pool has no connection available, will delegate the connection request to the provided LdapClient unless the maximum number of connection configured for the pool is reached. At which point the connection request will be queued for a maximum duration of LdapClients.CONNECT_TIMEOUT seconds before being aborted with a TimeoutResultException if the requests have not been fulfilled by the release of a connection to the pool.

    Effectively, receiving ResultCode.CLIENT_SIDE_CONNECT_ERROR as a result of a connection request could be the sign of an undersized connection pool.

    See Also:
    LdapClients.newCachedConnectionPool(LdapClient), LdapClients.newFixedConnectionPool(LdapClient, int)
    • Method Detail

      • close

        public void close()
        Releases any resources associated with this connection pool. Pooled connections will be permanently closed and this connection pool will no longer be available for use.

        Attempts to use this connection pool after it has been closed will result in an IllegalStateException.

        Calling close on a connection pool which is already closed has no effect.

        Specified by:
        close in interface AutoCloseable
        Specified by:
        close in interface Closeable
        Specified by:
        close in interface LdapClient
      • connect

        public io.reactivex.rxjava3.core.Single<LdapClientSocket> connect()
        Description copied from interface: LdapClient
        Returns a Single which connects to a peer each time it is subscribed.
        Specified by:
        connect in interface LdapClient
        Returns:
        A Single which connects to a peer each time it is subscribed.
      • finalize

        protected void finalize()
        Provide a finalizer because connection pools are expensive resources to accidentally leave around. Also, since they won't be created all that frequently, there's little risk of overloading the finalizer.
        Overrides:
        finalize in class Object
      • getStatistics

        public ConnectionPool.Statistics getStatistics()
        Retrieves the statistics for this connection pool.
        Returns:
        the statistics for this connection pool