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
ConstructorDescriptionPoolableConnection
(Connection conn, ObjectPool<PoolableConnection> pool, ObjectName jmxName) PoolableConnection
(Connection conn, ObjectPool<PoolableConnection> pool, ObjectName jmxObjectName, Collection<String> disconnectSqlCodes, boolean fastFailValidation) -
Method Summary
Modifier and TypeMethodDescriptionvoid
Abort my underlyingConnection
.void
close()
Returns me to my pool.Expose theDelegatingConnection.toString()
method via a bean getter, so it can be read as a property via JMX.protected void
Handles the given exception by throwing it.boolean
isClosed()
boolean
protected void
void
Actually close my underlyingConnection
.void
Sets the time this object was last used to the current time in milliseconds.void
Deprecated.void
Validates the connection, using the following algorithm: IffastFailValidation
(constructor argument) istrue
and this connection has previously thrown a fatal disconnection exception, aSQLException
is thrown. Ifsql
is 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, unwrap
Methods inherited from class org.apache.tomcat.dbcp.dbcp2.AbandonedTrace
addTrace, clearTrace, close, getLastUsed, getLastUsedInstant, getTrace, removeThisTrace, removeTrace, setLastUsed, setLastUsed
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.sql.Connection
beginRequest, endRequest, setShardingKey, setShardingKey, setShardingKeyIfValid, setShardingKeyIfValid
Methods 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)
-
-
Method Details
-
abort
Abort my underlyingConnection
.- Specified by:
abort
in interfaceConnection
- Overrides:
abort
in classDelegatingConnection<Connection>
- Throws:
SQLException
- Since:
- 2.9.0
-
close
Returns me to my pool.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceConnection
- Specified by:
close
in interfacePoolableConnectionMXBean
- Overrides:
close
in classDelegatingConnection<Connection>
- Throws:
SQLException
- Ignored here, for subclasses.
-
getDisconnectionSqlCodes
- Returns:
- The disconnection SQL codes.
- Since:
- 2.6.0
-
getToString
Expose theDelegatingConnection.toString()
method via a bean getter, so it can be read as a property via JMX.- Specified by:
getToString
in interfacePoolableConnectionMXBean
-
handleException
Description copied from class:DelegatingConnection
Handles the given exception by throwing it.- Overrides:
handleException
in classDelegatingConnection<Connection>
- Parameters:
e
- the exception to throw.- Throws:
SQLException
- the exception to throw.
-
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:
isClosed
in interfaceConnection
- Specified by:
isClosed
in interfacePoolableConnectionMXBean
- Overrides:
isClosed
in classDelegatingConnection<Connection>
- Throws:
SQLException
-
isFastFailValidation
public boolean isFastFailValidation()- Returns:
- Whether to fail-fast.
- Since:
- 2.6.0
-
passivate
- Overrides:
passivate
in classDelegatingConnection<Connection>
- Throws:
SQLException
-
reallyClose
Actually close my underlyingConnection
.- Specified by:
reallyClose
in interfacePoolableConnectionMXBean
- Throws:
SQLException
-
setLastUsed
public void setLastUsed()Description copied from class:AbandonedTrace
Sets the time this object was last used to the current time in milliseconds.- Overrides:
setLastUsed
in classAbandonedTrace
-
validate
Validates the connection, using the following algorithm:- If
fastFailValidation
(constructor argument) istrue
and this connection has previously thrown a fatal disconnection exception, aSQLException
is thrown. - If
sql
is null, the driver's #isValid(timeout)
is called. If it returnsfalse
,SQLException
is thrown; otherwise, this method returns successfully. - If
sql
is not null, it is executed as a query and if the resultingResultSet
contains at least one row, this method returns successfully. If not,SQLException
is 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) istrue
and this connection has previously thrown a fatal disconnection exception, aSQLException
is thrown. - If
sql
is null, the driver's #isValid(timeout)
is called. If it returnsfalse
,SQLException
is thrown; otherwise, this method returns successfully. - If
sql
is not null, it is executed as a query and if the resultingResultSet
contains at least one row, this method returns successfully. If not,SQLException
is 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)
.