Package com.unboundid.ldap.sdk
Class GetEntryLDAPConnectionPoolHealthCheck
- java.lang.Object
-
- com.unboundid.ldap.sdk.LDAPConnectionPoolHealthCheck
-
- com.unboundid.ldap.sdk.GetEntryLDAPConnectionPoolHealthCheck
-
- All Implemented Interfaces:
java.io.Serializable
@NotMutable @ThreadSafety(level=COMPLETELY_THREADSAFE) public final class GetEntryLDAPConnectionPoolHealthCheck extends LDAPConnectionPoolHealthCheck implements java.io.Serializable
This class provides an LDAP connection pool health check implementation that may be used to check the health of the associated server by verifying that a specified entry can be retrieved in an acceptable period of time. If the entry cannot be retrieved (either because it does not exist, or because an error occurs while attempting to retrieve it), or if it takes too long to retrieve the entry, then the associated connection will be classified as unavailable.
It is possible to control under which conditions an attempt should be made to retrieve the target entry, and also to specify a maximum acceptable response time. For best results, the target entry should be available to be retrieved by a client with any authentication state.- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description GetEntryLDAPConnectionPoolHealthCheck(java.lang.String entryDN, long maxResponseTime, boolean invokeOnCreate, boolean invokeOnCheckout, boolean invokeOnRelease, boolean invokeForBackgroundChecks, boolean invokeOnException)
Creates a new instance of this get entry LDAP connection pool health check.GetEntryLDAPConnectionPoolHealthCheck(java.lang.String entryDN, long maxResponseTime, boolean invokeOnCreate, boolean invokeAfterAuthentication, boolean invokeOnCheckout, boolean invokeOnRelease, boolean invokeForBackgroundChecks, boolean invokeOnException)
Creates a new instance of this get entry LDAP connection pool health check.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method 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.java.lang.String
getEntryDN()
Retrieves the DN of the entry that will be retrieved when performing the health checks.long
getMaxResponseTimeMillis()
Retrieves the maximum length of time in milliseconds that this health check should wait for the entry to be returned.boolean
invokeAfterAuthentication()
Indicates whether this health check will test for the existence of the target entry after a connection has been authenticated, including after authenticating a newly-created connection, as well as after calls to the connection pool'sbindAndRevertAuthentication
andreleaseAndReAuthenticateConnection
methods.boolean
invokeForBackgroundChecks()
Indicates whether this health check will test for the existence of the target entry during periodic background health checks.boolean
invokeOnCheckout()
Indicates whether this health check will test for the existence of the target entry whenever a connection is to be checked out for use.boolean
invokeOnCreate()
Indicates whether this health check will test for the existence of the target entry whenever a new connection is created.boolean
invokeOnException()
Indicates whether this health check will test for the existence of the target entry if an exception is caught while processing an operation on a connection.boolean
invokeOnRelease()
Indicates whether this health check will test for the existence of the target entry whenever a connection is to be released back to the pool.void
toString(java.lang.StringBuilder buffer)
Appends a string representation of this LDAP connection pool health check to the provided buffer.-
Methods inherited from class com.unboundid.ldap.sdk.LDAPConnectionPoolHealthCheck
performPoolMaintenance, toString
-
-
-
-
Constructor Detail
-
GetEntryLDAPConnectionPoolHealthCheck
public GetEntryLDAPConnectionPoolHealthCheck(@NotNull java.lang.String entryDN, long maxResponseTime, boolean invokeOnCreate, boolean invokeOnCheckout, boolean invokeOnRelease, boolean invokeForBackgroundChecks, boolean invokeOnException)
Creates a new instance of this get entry LDAP connection pool health check.- Parameters:
entryDN
- The DN of the entry to retrieve from the target server. If this isnull
, then the server's root DSE will be used.maxResponseTime
- The maximum length of time in milliseconds that should be allowed when attempting to retrieve the entry. If the provided value is less than or equal to zero, then the default value of 30000 milliseconds (30 seconds) will be used.invokeOnCreate
- Indicates whether to test for the existence of the target entry whenever a new connection is created for use in the pool. Note that this check will be performed immediately after the connection has been established and before any attempt has been made to authenticate that connection.invokeOnCheckout
- Indicates whether to test for the existence of the target entry immediately before a connection is checked out of the pool.invokeOnRelease
- Indicates whether to test for the existence of the target entry immediately after a connection has been released back to the pool.invokeForBackgroundChecks
- Indicates whether to test for the existence of the target entry during periodic background health checks.invokeOnException
- Indicates whether to test for the existence of the target entry if an exception is encountered when using the connection.
-
GetEntryLDAPConnectionPoolHealthCheck
public GetEntryLDAPConnectionPoolHealthCheck(@NotNull java.lang.String entryDN, long maxResponseTime, boolean invokeOnCreate, boolean invokeAfterAuthentication, boolean invokeOnCheckout, boolean invokeOnRelease, boolean invokeForBackgroundChecks, boolean invokeOnException)
Creates a new instance of this get entry LDAP connection pool health check.- Parameters:
entryDN
- The DN of the entry to retrieve from the target server. If this isnull
, then the server's root DSE will be used.maxResponseTime
- The maximum length of time in milliseconds that should be allowed when attempting to retrieve the entry. If the provided value is less than or equal to zero, then the default value of 30000 milliseconds (30 seconds) will be used.invokeOnCreate
- Indicates whether to test for the existence of the target entry whenever a new connection is created for use in the pool. Note that this check will be performed immediately after the connection has been established and before any attempt has been made to authenticate that connection.invokeAfterAuthentication
- Indicates whether to test for the existence of the target entry immediately after a connection has been authenticated. This includes immediately after a newly-created connection has been authenticated, after a call to the connection pool'sbindAndRevertAuthentication
method, and after a call to the connection pool'sreleaseAndReAuthenticateConnection
method. Note that even if this istrue
, the health check will only be performed if the provided bind result indicates that the bind was successful.invokeOnCheckout
- Indicates whether to test for the existence of the target entry immediately before a connection is checked out of the pool.invokeOnRelease
- Indicates whether to test for the existence of the target entry immediately after a connection has been released back to the pool.invokeForBackgroundChecks
- Indicates whether to test for the existence of the target entry during periodic background health checks.invokeOnException
- Indicates whether to test for the existence of the target entry if an exception is encountered when using the connection.
-
-
Method Detail
-
ensureNewConnectionValid
public void ensureNewConnectionValid(@NotNull LDAPConnection connection) throws LDAPException
Performs any desired processing to determine whether the provided new connection is available to be checked out and used for processing operations. This method will be invoked by eitherServerSet
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.- Overrides:
ensureNewConnectionValid
in classLDAPConnectionPoolHealthCheck
- Parameters:
connection
- The connection to be examined.- Throws:
LDAPException
- If a problem is detected that suggests that the provided connection is not suitable for use.
-
ensureConnectionValidAfterAuthentication
public void ensureConnectionValidAfterAuthentication(@NotNull LDAPConnection connection, @NotNull BindResult bindResult) throws LDAPException
Performs any desired processing to determine whether the provided connection is valid after processing a bind operation with the provided result.
This method will be invoked under the following circumstances:-
If you create a connection pool with a
ServerSet
and a non-null
BindRequest
, then this health check method will be invoked for every new connection created by the pool after processing thatBindRequest
on the connection. If you create a connection pool with aServerSet
but anull
BindRequest
, then no authentication will be attempted (and therefore this health check method will not be invoked for) newly-created connections. -
If you create a connection pool with an
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 anLDAPConnection
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. -
If you call a connection pool's
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 anull
BindRequest
or with an unauthenticatedLDAPConnection
. In that case, the bind operation used to revert authentication will be aSimpleBindRequest
with an empty DN and password. -
If you call a connection pool's
releaseAndReAuthenticateConnection
method, then this health check method will be called after the bind operation has completed. As withbindAndRevertAuthentication
, this health check method will be called even if the connection pool was created with anull
BindRequest
or with an unauthenticatedLDAPConnection
.
Note that this health check method may be invoked even if the bind attempt was not successful. This is useful because it allows the health check to intercept a failed authentication attempt and differentiate it from other types of failures in the course of trying to create or check out a connection. In the event that it is invoked with aBindResult
that has a result code other thanResultCode.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.- Overrides:
ensureConnectionValidAfterAuthentication
in classLDAPConnectionPoolHealthCheck
- Parameters:
connection
- The connection to be examined.bindResult
- The bind result obtained from the authentication process.- Throws:
LDAPException
- If a problem is detected that suggests that the provided connection is not suitable for use.
-
If you create a connection pool with a
-
ensureConnectionValidForCheckout
public void ensureConnectionValidForCheckout(@NotNull LDAPConnection connection) throws LDAPException
Performs any desired processing to determine whether the provided connection is available to be checked out and used for processing operations. This method will be invoked by theLDAPConnectionPool.getConnection()
method before handing out a connection. This method should return normally if the connection is believed to be valid, or should throw anLDAPException
if a problem is detected.- Overrides:
ensureConnectionValidForCheckout
in classLDAPConnectionPoolHealthCheck
- Parameters:
connection
- The connection to be examined.- Throws:
LDAPException
- If a problem is detected that suggests that the provided connection is not suitable for use.
-
ensureConnectionValidForRelease
public void ensureConnectionValidForRelease(@NotNull LDAPConnection connection) throws LDAPException
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. This method will be invoked by theLDAPConnectionPool.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 anLDAPException
if a problem is detected.- Overrides:
ensureConnectionValidForRelease
in classLDAPConnectionPoolHealthCheck
- Parameters:
connection
- The connection to be examined.- Throws:
LDAPException
- If a problem is detected that suggests that the provided connection is not suitable for use.
-
ensureConnectionValidForContinuedUse
public void ensureConnectionValidForContinuedUse(@NotNull LDAPConnection connection) throws LDAPException
Performs any desired processing to determine whether the provided connection is valid and should continue to be made available for processing operations. This method will be periodically invoked by a background thread used to test availability of connections within the pool. This method should return normally if the connection is believed to be valid, or should throw anLDAPException
if a problem is detected.- Overrides:
ensureConnectionValidForContinuedUse
in classLDAPConnectionPoolHealthCheck
- Parameters:
connection
- The connection to be examined.- Throws:
LDAPException
- If a problem is detected that suggests that the provided connection is not suitable for use.
-
ensureConnectionValidAfterException
public void ensureConnectionValidAfterException(@NotNull LDAPConnection connection, @NotNull LDAPException exception) throws LDAPException
Indicates whether the provided connection may still be considered valid after an attempt to process an operation yielded the given exception. This method will be invoked by theAbstractConnectionPool.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 anLDAPException
if a problem is detected.- Overrides:
ensureConnectionValidAfterException
in classLDAPConnectionPoolHealthCheck
- Parameters:
connection
- The connection to be examined.exception
- The exception that was caught while processing an operation on the connection.- Throws:
LDAPException
- If a problem is detected that suggests that the provided connection is not suitable for use.
-
getEntryDN
@NotNull public java.lang.String getEntryDN()
Retrieves the DN of the entry that will be retrieved when performing the health checks.- Returns:
- The DN of the entry that will be retrieved when performing the health checks.
-
getMaxResponseTimeMillis
public long getMaxResponseTimeMillis()
Retrieves the maximum length of time in milliseconds that this health check should wait for the entry to be returned.- Returns:
- The maximum length of time in milliseconds that this health check should wait for the entry to be returned.
-
invokeOnCreate
public boolean invokeOnCreate()
Indicates whether this health check will test for the existence of the target entry whenever a new connection is created.- Returns:
true
if this health check will test for the existence of the target entry whenever a new connection is created, orfalse
if not.
-
invokeAfterAuthentication
public boolean invokeAfterAuthentication()
Indicates whether this health check will test for the existence of the target entry after a connection has been authenticated, including after authenticating a newly-created connection, as well as after calls to the connection pool'sbindAndRevertAuthentication
andreleaseAndReAuthenticateConnection
methods.- Returns:
true
if this health check will test for the existence of the target entry whenever a connection has been authenticated, orfalse
if not.
-
invokeOnCheckout
public boolean invokeOnCheckout()
Indicates whether this health check will test for the existence of the target entry whenever a connection is to be checked out for use.- Returns:
true
if this health check will test for the existence of the target entry whenever a connection is to be checked out, orfalse
if not.
-
invokeOnRelease
public boolean invokeOnRelease()
Indicates whether this health check will test for the existence of the target entry whenever a connection is to be released back to the pool.- Returns:
true
if this health check will test for the existence of the target entry whenever a connection is to be released, orfalse
if not.
-
invokeForBackgroundChecks
public boolean invokeForBackgroundChecks()
Indicates whether this health check will test for the existence of the target entry during periodic background health checks.- Returns:
true
if this health check will test for the existence of the target entry during periodic background health checks, orfalse
if not.
-
invokeOnException
public boolean invokeOnException()
Indicates whether this health check will test for the existence of the target entry if an exception is caught while processing an operation on a connection.- Returns:
true
if this health check will test for the existence of the target entry whenever an exception is caught, orfalse
if not.
-
toString
public void toString(@NotNull java.lang.StringBuilder buffer)
Appends a string representation of this LDAP connection pool health check to the provided buffer.- Overrides:
toString
in classLDAPConnectionPoolHealthCheck
- Parameters:
buffer
- The buffer to which the information should be appended.
-
-