Package org.apache.tomcat.dbcp.dbcp2
Class PoolableConnection
java.lang.Object
org.apache.tomcat.dbcp.dbcp2.AbandonedTrace
org.apache.tomcat.dbcp.dbcp2.DelegatingConnection<Connection>
org.apache.tomcat.dbcp.dbcp2.PoolableConnection
- All Implemented Interfaces:
AutoCloseable,Connection,Wrapper,PoolableConnectionMXBean,TrackedUse
- Direct Known Subclasses:
PoolableManagedConnection
public class PoolableConnection
extends DelegatingConnection<Connection>
implements PoolableConnectionMXBean
A delegating connection that, rather than closing the underlying connection, returns itself to an
ObjectPool
when closed.- Since:
- 2.0
-
Field Summary
Fields inherited from interface java.sql.Connection
TRANSACTION_NONE, TRANSACTION_READ_COMMITTED, TRANSACTION_READ_UNCOMMITTED, TRANSACTION_REPEATABLE_READ, TRANSACTION_SERIALIZABLE -
Constructor Summary
ConstructorsConstructorDescriptionPoolableConnection(Connection conn, ObjectPool<PoolableConnection> pool, ObjectName jmxName) PoolableConnection(Connection conn, ObjectPool<PoolableConnection> pool, ObjectName jmxObjectName, Collection<String> disconnectSqlCodes, boolean fastFailValidation) PoolableConnection(Connection conn, ObjectPool<PoolableConnection> pool, ObjectName jmxObjectName, Collection<String> disconnectSqlCodes, Collection<String> disconnectionIgnoreSqlCodes, boolean fastFailValidation) Creates a newPoolableConnectioninstance. -
Method Summary
Modifier and TypeMethodDescriptionvoidAbort my underlyingConnection.voidclose()Returns this instance to my containing pool.Gets the value of theDelegatingConnection.toString()method via a bean getter, so it can be read as a property via JMX.protected voidHandles the given exception by throwing it.booleanisClosed()booleanprotected voidClears the list of objects being traced by this object.voidCloses the underlyingConnection.voidSets the time this object was last used to the current time in milliseconds.voidDeprecated.voidValidates the connection, using the following algorithm: IffastFailValidation(constructor argument) istrueand this connection has previously thrown a fatal disconnection exception, aSQLExceptionis thrown. Ifsqlis null, the driver's #isValid(timeout)is called.Methods inherited from class org.apache.tomcat.dbcp.dbcp2.DelegatingConnection
activate, checkOpen, clearCachedState, clearWarnings, closeInternal, commit, createArrayOf, createBlob, createClob, createNClob, createSQLXML, createStatement, createStatement, createStatement, createStruct, getAutoCommit, getCacheState, getCatalog, getClientInfo, getClientInfo, getDefaultQueryTimeout, getDefaultQueryTimeoutDuration, getDelegate, getDelegateInternal, getHoldability, getInnermostDelegate, getInnermostDelegateInternal, getMetaData, getNetworkTimeout, getSchema, getTransactionIsolation, getTypeMap, getWarnings, handleExceptionNoThrow, innermostDelegateEquals, isClosedInternal, isReadOnly, isValid, isValid, isWrapperFor, nativeSQL, prepareCall, prepareCall, prepareCall, prepareStatement, prepareStatement, prepareStatement, prepareStatement, prepareStatement, prepareStatement, releaseSavepoint, rollback, rollback, setAutoCommit, setCacheState, setCatalog, setClientInfo, setClientInfo, setClosedInternal, setDefaultQueryTimeout, setDefaultQueryTimeout, setDelegate, setHoldability, setNetworkTimeout, setReadOnly, setSavepoint, setSavepoint, setSchema, setTransactionIsolation, setTypeMap, toString, unwrapMethods inherited from class org.apache.tomcat.dbcp.dbcp2.AbandonedTrace
addTrace, clearTrace, close, getLastUsed, getLastUsedInstant, getTrace, removeThisTrace, removeTrace, setLastUsed, setLastUsedMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.sql.Connection
beginRequest, endRequest, setShardingKey, setShardingKey, setShardingKeyIfValid, setShardingKeyIfValidMethods inherited from interface org.apache.tomcat.dbcp.dbcp2.PoolableConnectionMXBean
clearCachedState, clearWarnings, getAutoCommit, getCacheState, getCatalog, getHoldability, getSchema, getTransactionIsolation, isReadOnly, setAutoCommit, setCacheState, setCatalog, setHoldability, setReadOnly, setSchema, setTransactionIsolation
-
Constructor Details
-
PoolableConnection
- Parameters:
conn- my underlying connectionpool- the pool to which I should return when closedjmxName- JMX name
-
PoolableConnection
public PoolableConnection(Connection conn, ObjectPool<PoolableConnection> pool, ObjectName jmxObjectName, Collection<String> disconnectSqlCodes, boolean fastFailValidation) - Parameters:
conn- my underlying connectionpool- the pool to which I should return when closedjmxObjectName- JMX namedisconnectSqlCodes- SQL State codes considered fatal disconnection errorsfastFailValidation- true means fatal disconnection errors cause subsequent validations to fail immediately (no attempt to run query or isValid)
-
PoolableConnection
public PoolableConnection(Connection conn, ObjectPool<PoolableConnection> pool, ObjectName jmxObjectName, Collection<String> disconnectSqlCodes, Collection<String> disconnectionIgnoreSqlCodes, boolean fastFailValidation) Creates a newPoolableConnectioninstance.- Parameters:
conn- my underlying connectionpool- the pool to which I should return when closedjmxObjectName- JMX namedisconnectSqlCodes- SQL State codes considered fatal disconnection errorsdisconnectionIgnoreSqlCodes- SQL State codes that should be ignored when determining fatal disconnection errorsfastFailValidation- true means fatal disconnection errors cause subsequent validations to fail immediately (no attempt to run query or isValid)- Since:
- 2.13.0
-
-
Method Details
-
abort
Abort my underlyingConnection.- Specified by:
abortin interfaceConnection- Overrides:
abortin classDelegatingConnection<Connection>- Throws:
SQLException- Since:
- 2.9.0
-
close
Returns this instance to my containing pool.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceConnection- Specified by:
closein interfacePoolableConnectionMXBean- Overrides:
closein classDelegatingConnection<Connection>- Throws:
SQLException- Ignored here, for subclasses.
-
getDisconnectionSqlCodes
- Returns:
- The disconnection SQL codes.
- Since:
- 2.6.0
-
getToString
Gets the value of theDelegatingConnection.toString()method via a bean getter, so it can be read as a property via JMX.- Specified by:
getToStringin interfacePoolableConnectionMXBean- Returns:
- the value of the
Object.toString().
-
handleException
Description copied from class:DelegatingConnectionHandles the given exception by throwing it.- Overrides:
handleExceptionin classDelegatingConnection<Connection>- Parameters:
e- the exception to throw.- Throws:
SQLException- the exception to throw.
-
isClosed
SeeConnection.isClosed().This method should not be used by a client to determine whether or not a connection should be return to the connection pool (by calling
close()). Clients should always attempt to return a connection to the pool once it is no longer required.- Specified by:
isClosedin interfaceConnection- Specified by:
isClosedin interfacePoolableConnectionMXBean- Overrides:
isClosedin classDelegatingConnection<Connection>- Returns:
- See
Connection.isClosed(). - Throws:
SQLException- SeeConnection.isClosed().
-
isFastFailValidation
public boolean isFastFailValidation()- Returns:
- Whether to fail-fast.
- Since:
- 2.6.0
-
passivate
Description copied from class:DelegatingConnectionClears the list of objects being traced by this object.- Overrides:
passivatein classDelegatingConnection<Connection>- Throws:
SQLException- Thrown if not all traced objects were closed.
-
reallyClose
Closes the underlyingConnection.- Specified by:
reallyClosein interfacePoolableConnectionMXBean- Throws:
SQLException- Thrown if the connection can be closed.
-
setLastUsed
public void setLastUsed()Description copied from class:AbandonedTraceSets the time this object was last used to the current time in milliseconds.- Overrides:
setLastUsedin classAbandonedTrace
-
validate
Validates the connection, using the following algorithm:- If
fastFailValidation(constructor argument) istrueand this connection has previously thrown a fatal disconnection exception, aSQLExceptionis thrown. - If
sqlis null, the driver's #isValid(timeout)is called. If it returnsfalse,SQLExceptionis thrown; otherwise, this method returns successfully. - If
sqlis not null, it is executed as a query and if the resultingResultSetcontains at least one row, this method returns successfully. If not,SQLExceptionis thrown.
- Parameters:
sql- The validation SQL query.timeoutDuration- The validation timeout in seconds.- Throws:
SQLException- Thrown when validation fails or an SQLException occurs during validation- Since:
- 2.10.0
- If
-
validate
Deprecated.Validates the connection, using the following algorithm:- If
fastFailValidation(constructor argument) istrueand this connection has previously thrown a fatal disconnection exception, aSQLExceptionis thrown. - If
sqlis null, the driver's #isValid(timeout)is called. If it returnsfalse,SQLExceptionis thrown; otherwise, this method returns successfully. - If
sqlis not null, it is executed as a query and if the resultingResultSetcontains at least one row, this method returns successfully. If not,SQLExceptionis thrown.
- Parameters:
sql- The validation SQL query.timeoutSeconds- The validation timeout in seconds.- Throws:
SQLException- Thrown when validation fails or an SQLException occurs during validation
- If
-
validate(String, Duration).