@ThreadSafety(level=COMPLETELY_THREADSAFE) public final class AggregateLDAPConnectionPoolHealthCheck extends LDAPConnectionPoolHealthCheck
LDAPConnectionPoolHealthCheck
implementation
that may be used to invoke a series of subordinate health checks and ensure
that all of them consider a connection valid before indicating that the
connection is valid. If any of the subordinate health checks indicates that
the connection is invalid, then the connection will be considered invalid.Constructor and Description |
---|
AggregateLDAPConnectionPoolHealthCheck(java.util.Collection<? extends LDAPConnectionPoolHealthCheck> healthChecks)
Creates a new instance of this LDAP connection pool health check.
|
AggregateLDAPConnectionPoolHealthCheck(LDAPConnectionPoolHealthCheck... healthChecks)
Creates a new instance of this LDAP connection pool health check.
|
Modifier and Type | Method and Description |
---|---|
void |
ensureConnectionValidAfterAuthentication(LDAPConnection connection,
BindResult bindResult)
Performs any desired processing to determine whether the provided
connection is valid after processing a bind operation with the provided
result.
|
void |
ensureConnectionValidAfterException(LDAPConnection connection,
LDAPException exception)
Indicates whether the provided connection may still be considered valid
after an attempt to process an operation yielded the given exception.
|
void |
ensureConnectionValidForCheckout(LDAPConnection connection)
Performs any desired processing to determine whether the provided
connection is available to be checked out and used for processing
operations.
|
void |
ensureConnectionValidForContinuedUse(LDAPConnection connection)
Performs any desired processing to determine whether the provided
connection is valid and should continue to be made available for
processing operations.
|
void |
ensureConnectionValidForRelease(LDAPConnection connection)
Performs any desired processing to determine whether the provided
connection is valid and should be released back to the pool to be used for
processing other operations.
|
void |
ensureNewConnectionValid(LDAPConnection connection)
Performs any desired processing to determine whether the provided new
connection is available to be checked out and used for processing
operations.
|
void |
performPoolMaintenance(AbstractConnectionPool pool)
Performs any processing that may be appropriate on an ongoing basis for the
connection pool that is related to the pool itself rather than any
individual connection.
|
void |
toString(java.lang.StringBuilder buffer)
Appends a string representation of this LDAP connection pool health check
to the provided buffer.
|
toString
public AggregateLDAPConnectionPoolHealthCheck(@NotNull LDAPConnectionPoolHealthCheck... healthChecks)
healthChecks
- The set of health checks that must all be satisfied
in order to consider a connection valid.public AggregateLDAPConnectionPoolHealthCheck(@NotNull java.util.Collection<? extends LDAPConnectionPoolHealthCheck> healthChecks)
healthChecks
- The set of health checks that must all be satisfied
in order to consider a connection valid.public void ensureNewConnectionValid(@NotNull LDAPConnection connection) throws LDAPException
ServerSet
used
by the connection pool (if it supports enhanced health checking) or by the
connection pool itself at the time that a new connection is created. No
authentication will have been performed on this connection at the time the
health check is invoked.ensureNewConnectionValid
in class LDAPConnectionPoolHealthCheck
connection
- The connection to be examined.LDAPException
- If a problem is detected that suggests that the
provided connection is not suitable for use.public void ensureConnectionValidAfterAuthentication(@NotNull LDAPConnection connection, @NotNull BindResult bindResult) throws LDAPException
ServerSet
and a
non-null
BindRequest
, then this health check method
will be invoked for every new connection created by the pool after
processing that BindRequest
on the connection. If you create a
connection pool with a ServerSet
but a null
BindRequest
, then no authentication will be attempted (and
therefore this health check method will not be invoked for)
newly-created connections.
LDAPConnection
after
having performed a bind operation on that connection, then every new
connection created by the pool will attempt to perform the same type of
bind operation and this health check method will be invoked after that
bind attempt has completed. If you create a connection pool with an
LDAPConnection
that has not been authenticated, then no
authentication will be attempted (and therefore this health check
method will not be invoked for) newly-created connections.
bindAndRevertAuthentication
method, then this health check method will be called after the second
bind operation (the one used to revert authentication) has completed.
In this case, this health check method will be called even if the
connection pool was created with a null
BindRequest
or
with an unauthenticated LDAPConnection
. In that case, the
bind operation used to revert authentication will be a
SimpleBindRequest
with an empty DN and password.
releaseAndReAuthenticateConnection
method, then this health
check method will be called after the bind operation has completed. As
with bindAndRevertAuthentication
, this health check method will
be called even if the connection pool was created with a null
BindRequest
or with an unauthenticated LDAPConnection
.
BindResult
that has a result code other than ResultCode.SUCCESS
, if this
method throws an exception then that exception will be propagated to the
caller. If this method does not throw an exception when provided with a
non-SUCCESS
result, then the connection pool itself will throw an
exception using the information in the bind result.ensureConnectionValidAfterAuthentication
in class LDAPConnectionPoolHealthCheck
connection
- The connection to be examined.bindResult
- The bind result obtained from the authentication
process.LDAPException
- If a problem is detected that suggests that the
provided connection is not suitable for use.public void ensureConnectionValidForCheckout(@NotNull LDAPConnection connection) throws LDAPException
LDAPConnectionPool.getConnection()
method before handing out a
connection. This method should return normally if the connection is
believed to be valid, or should throw an LDAPException
if a problem
is detected.ensureConnectionValidForCheckout
in class LDAPConnectionPoolHealthCheck
connection
- The connection to be examined.LDAPException
- If a problem is detected that suggests that the
provided connection is not suitable for use.public void ensureConnectionValidForRelease(@NotNull LDAPConnection connection) throws LDAPException
LDAPConnectionPool.releaseConnection(LDAPConnection)
method before
making the connection available for use in processing other operations.
This method should return normally if the connection is believed to be
valid, or should throw an LDAPException
if a problem is detected.ensureConnectionValidForRelease
in class LDAPConnectionPoolHealthCheck
connection
- The connection to be examined.LDAPException
- If a problem is detected that suggests that the
provided connection is not suitable for use.public void ensureConnectionValidForContinuedUse(@NotNull LDAPConnection connection) throws LDAPException
LDAPException
if a problem is detected.ensureConnectionValidForContinuedUse
in class LDAPConnectionPoolHealthCheck
connection
- The connection to be examined.LDAPException
- If a problem is detected that suggests that the
provided connection is not suitable for use.public void performPoolMaintenance(@NotNull AbstractConnectionPool pool)
LDAPConnectionPoolHealthCheckThread
at an interval specified by the
pool's AbstractConnectionPool.getHealthCheckIntervalMillis()
method. This method will be invoked after all other periodic processing
(for example, after calling LDAPConnectionPoolHealthCheck.ensureConnectionValidForContinuedUse(com.unboundid.ldap.sdk.LDAPConnection)
on each available connection, if appropriate for the pool implementation)
has been performed during the interval.performPoolMaintenance
in class LDAPConnectionPoolHealthCheck
pool
- The connection pool on which to perform maintenance.public void ensureConnectionValidAfterException(@NotNull LDAPConnection connection, @NotNull LDAPException exception) throws LDAPException
AbstractConnectionPool.releaseConnectionAfterException(com.unboundid.ldap.sdk.LDAPConnection, com.unboundid.ldap.sdk.LDAPException)
method, and it
may also be manually invoked by external callers if an exception is
encountered while processing an operation on a connection checked out from
the pool. It may make a determination based solely on the provided
exception, or it may also attempt to use the provided connection to further
test its validity. This method should return normally if the connection is
believed to be valid, or should throw an LDAPException
if a problem
is detected.ensureConnectionValidAfterException
in class LDAPConnectionPoolHealthCheck
connection
- The connection to be examined.exception
- The exception that was caught while processing an
operation on the connection.LDAPException
- If a problem is detected that suggests that the
provided connection is not suitable for use.public void toString(@NotNull java.lang.StringBuilder buffer)
toString
in class LDAPConnectionPoolHealthCheck
buffer
- The buffer to which the information should be appended.