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 anObjectPoolwhen 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
Constructors Constructor Description PoolableConnection(Connection conn, ObjectPool<PoolableConnection> pool, ObjectName jmxName)PoolableConnection(Connection conn, ObjectPool<PoolableConnection> pool, ObjectName jmxObjectName, Collection<String> disconnectSqlCodes, boolean fastFailValidation)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidabort(Executor executor)Abort my underlyingConnection.voidclose()Returns me to my pool.Collection<String>getDisconnectionSqlCodes()StringgetToString()Expose theDelegatingConnection.toString()method via a bean getter so it can be read as a property via JMX.protected voidhandleException(SQLException e)Handles the given exception by throwing it.booleanisClosed()booleanisFastFailValidation()protected voidpassivate()voidreallyClose()Actually close my underlyingConnection.voidvalidate(String sql, int timeoutSeconds)Deprecated.voidvalidate(String sql, Duration timeoutDuration)Validates 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, unwrap
-
Methods inherited from class org.apache.tomcat.dbcp.dbcp2.AbandonedTrace
addTrace, clearTrace, close, getLastUsed, getLastUsedInstant, getTrace, removeThisTrace, removeTrace, setLastUsed, 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 Detail
-
PoolableConnection
public PoolableConnection(Connection conn, ObjectPool<PoolableConnection> pool, ObjectName jmxName)
- 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 Detail
-
abort
public void abort(Executor executor) throws SQLException
Abort my underlyingConnection.- Specified by:
abortin interfaceConnection- Overrides:
abortin classDelegatingConnection<Connection>- Throws:
SQLException- Since:
- 2.9.0
-
close
public void close() throws SQLExceptionReturns me to my pool.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceConnection- Specified by:
closein interfacePoolableConnectionMXBean- Overrides:
closein classDelegatingConnection<Connection>- Throws:
SQLException- Ignored here, for subclasses.
-
getDisconnectionSqlCodes
public Collection<String> getDisconnectionSqlCodes()
- Returns:
- The disconnection SQL codes.
- Since:
- 2.6.0
-
getToString
public String getToString()
Expose theDelegatingConnection.toString()method via a bean getter so it can be read as a property via JMX.- Specified by:
getToStringin interfacePoolableConnectionMXBean
-
handleException
protected void handleException(SQLException e) throws SQLException
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
public boolean isClosed() throws SQLExceptionThis 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>- Throws:
SQLException
-
isFastFailValidation
public boolean isFastFailValidation()
- Returns:
- Whether to fail-fast.
- Since:
- 2.6.0
-
passivate
protected void passivate() throws SQLException- Overrides:
passivatein classDelegatingConnection<Connection>- Throws:
SQLException
-
reallyClose
public void reallyClose() throws SQLExceptionActually close my underlyingConnection.- Specified by:
reallyClosein interfacePoolableConnectionMXBean- Throws:
SQLException
-
validate
@Deprecated public void validate(String sql, int timeoutSeconds) throws SQLException
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
public void validate(String sql, Duration timeoutDuration) throws SQLException
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
-
-