Class DelegatingConnection<C extends Connection>
- Type Parameters:
C- the Connection type
- All Implemented Interfaces:
AutoCloseable,Connection,Wrapper,TrackedUse
- Direct Known Subclasses:
ManagedConnection,PoolableConnection,PoolingConnection
Connection.
All of the methods from the Connection interface simply check to see that the Connection is active,
and call the corresponding method on the "delegate" provided in my constructor.
Extends AbandonedTrace to implement Connection tracking and logging of code which created the Connection. Tracking the Connection ensures that the AbandonedObjectPool can close this connection and recycle it if its pool of connections is nearing exhaustion and this connection's last usage is older than the removeAbandonedTimeout.
- 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
ConstructorsConstructorDescriptionDelegatingConnection(C connection) Creates a wrapper for the Connection which traces this Connection in the AbandonedObjectPool. -
Method Summary
Modifier and TypeMethodDescriptionvoidprotected voidactivate()Marks this instance as used and delegates to a wrappedactivate().protected voidThrows a SQLException if this connection is not open.voidClears the cached state.voidvoidclose()Closes the underlying connection, and close any Statements that were not explicitly closed.protected final voidvoidcommit()createArrayOf(String typeName, Object[] elements) createStatement(int resultSetType, int resultSetConcurrency) createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) createStruct(String typeName, Object[] attributes) booleanbooleanGets whether to cache properties.getClientInfo(String name) Deprecated.Gets the default query timeout that will be used forStatements created from this connection.Returns my underlyingConnection.protected final CGets the delegate connection.intIf my underlyingConnectionis not aDelegatingConnection, returns it, otherwise recursively invokes this method on my delegate.final ConnectionAlthough this method is public, it is part of the internal API and should not be used by clients.intintprotected voidHandles the given exception by throwing it.protected <T extends Throwable>
THandles the givenSQLException.booleanCompares innermost delegate to the given connection.booleanisClosed()protected booleanTests the raw internal closed state.booleanbooleanisValid(int timeoutSeconds) Deprecated.UseisValid(Duration).booleanTests if the connection has not been closed and is still valid.booleanisWrapperFor(Class<?> iface) protected voidClears the list of objects being traced by this object.prepareCall(String sql) prepareCall(String sql, int resultSetType, int resultSetConcurrency) prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) prepareStatement(String sql) prepareStatement(String sql, int autoGeneratedKeys) prepareStatement(String sql, int[] columnIndexes) prepareStatement(String sql, int resultSetType, int resultSetConcurrency) prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) prepareStatement(String sql, String[] columnNames) voidreleaseSavepoint(Savepoint savepoint) voidrollback()voidvoidsetAutoCommit(boolean autoCommit) voidsetCacheState(boolean cacheState) Sets whether to cache properties.voidsetCatalog(String catalog) voidsetClientInfo(String name, String value) voidsetClientInfo(Properties properties) protected voidsetClosedInternal(boolean closed) Sets the raw internal closed state.voidsetDefaultQueryTimeout(Integer defaultQueryTimeoutSeconds) Deprecated.voidsetDefaultQueryTimeout(Duration defaultQueryTimeoutDuration) Sets the default query timeout that will be used forStatements created from this connection.voidsetDelegate(C connection) Sets my delegate.voidsetHoldability(int holdability) voidsetNetworkTimeout(Executor executor, int milliseconds) voidsetReadOnly(boolean readOnly) setSavepoint(String name) voidvoidsetTransactionIsolation(int level) voidsetTypeMap(Map<String, Class<?>> map) toString()Returns a string representation of the metadata associated with the innermost delegate connection.<T> TMethods inherited from class org.apache.tomcat.dbcp.dbcp2.AbandonedTrace
addTrace, clearTrace, close, getLastUsed, getLastUsedInstant, getTrace, removeThisTrace, removeTrace, setLastUsed, 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, setShardingKeyIfValid
-
Constructor Details
-
DelegatingConnection
Creates a wrapper for the Connection which traces this Connection in the AbandonedObjectPool.- Parameters:
connection- theConnectionto delegate all calls to, may be null (seeManagedConnection).
-
-
Method Details
-
abort
- Specified by:
abortin interfaceConnection- Throws:
SQLException
-
activate
protected void activate()Marks this instance as used and delegates to a wrappedactivate(). -
checkOpen
Throws a SQLException if this connection is not open.- Throws:
SQLException- Thrown if this connection is not open.
-
clearCachedState
public void clearCachedState()Clears the cached state. Call when you know that the underlying connection may have been accessed directly. -
clearWarnings
- Specified by:
clearWarningsin interfaceConnection- Throws:
SQLException
-
close
Closes the underlying connection, and close any Statements that were not explicitly closed. Sub-classes that override this method must:- Call
passivate() - Call close (or the equivalent appropriate action) on the wrapped connection
- Set
closedtofalse
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceConnection- Overrides:
closein classAbandonedTrace- Throws:
SQLException- Ignored here, for subclasses.
- Call
-
closeInternal
- Throws:
SQLException
-
commit
- Specified by:
commitin interfaceConnection- Throws:
SQLException
-
createArrayOf
- Specified by:
createArrayOfin interfaceConnection- Throws:
SQLException
-
createBlob
- Specified by:
createBlobin interfaceConnection- Throws:
SQLException
-
createClob
- Specified by:
createClobin interfaceConnection- Throws:
SQLException
-
createNClob
- Specified by:
createNClobin interfaceConnection- Throws:
SQLException
-
createSQLXML
- Specified by:
createSQLXMLin interfaceConnection- Throws:
SQLException
-
createStatement
- Specified by:
createStatementin interfaceConnection- Throws:
SQLException
-
createStatement
- Specified by:
createStatementin interfaceConnection- Throws:
SQLException
-
createStatement
public Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException - Specified by:
createStatementin interfaceConnection- Throws:
SQLException
-
createStruct
- Specified by:
createStructin interfaceConnection- Throws:
SQLException
-
getAutoCommit
- Specified by:
getAutoCommitin interfaceConnection- Throws:
SQLException
-
getCacheState
public boolean getCacheState()Gets whether to cache properties. The cached properties are:- auto-commit
- catalog
- schema
- read-only
- Returns:
- the state caching flag
-
getCatalog
- Specified by:
getCatalogin interfaceConnection- Throws:
SQLException
-
getClientInfo
- Specified by:
getClientInfoin interfaceConnection- Throws:
SQLException
-
getClientInfo
- Specified by:
getClientInfoin interfaceConnection- Throws:
SQLException
-
getDefaultQueryTimeout
Deprecated.Gets the default query timeout that will be used forStatements created from this connection.nullmeans that the driver default will be used.- Returns:
- query timeout limit in seconds; zero means there is no limit.
-
getDefaultQueryTimeoutDuration
-
getDelegate
-
getDelegateInternal
Gets the delegate connection.- Returns:
- the delegate connection.
-
getHoldability
- Specified by:
getHoldabilityin interfaceConnection- Throws:
SQLException
-
getInnermostDelegate
If my underlyingConnectionis not aDelegatingConnection, returns it, otherwise recursively invokes this method on my delegate.Hence this method will return the first delegate that is not a
DelegatingConnection, ornullwhen no non-DelegatingConnectiondelegate can be found by traversing this chain.This method is useful when you may have nested
DelegatingConnections, and you want to make sure to obtain a "genuine"Connection.- Returns:
- innermost delegate.
-
getInnermostDelegateInternal
Although this method is public, it is part of the internal API and should not be used by clients. The signature of this method may change at any time including in ways that break backwards compatibility.- Returns:
- innermost delegate.
-
getMetaData
- Specified by:
getMetaDatain interfaceConnection- Throws:
SQLException
-
getNetworkTimeout
- Specified by:
getNetworkTimeoutin interfaceConnection- Throws:
SQLException
-
getSchema
- Specified by:
getSchemain interfaceConnection- Throws:
SQLException
-
getTransactionIsolation
- Specified by:
getTransactionIsolationin interfaceConnection- Throws:
SQLException
-
getTypeMap
- Specified by:
getTypeMapin interfaceConnection- Throws:
SQLException
-
getWarnings
- Specified by:
getWarningsin interfaceConnection- Throws:
SQLException
-
handleException
Handles the given exception by throwing it.- Parameters:
e- the exception to throw.- Throws:
SQLException- the exception to throw.
-
handleExceptionNoThrow
Handles the givenSQLException.- Type Parameters:
T- The throwable type.- Parameters:
e- The SQLException- Returns:
- the given
SQLException - Since:
- 2.7.0
-
innermostDelegateEquals
Compares innermost delegate to the given connection.- Parameters:
c- connection to compare innermost delegate with- Returns:
- true if innermost delegate equals
c
-
isClosed
- Specified by:
isClosedin interfaceConnection- Throws:
SQLException
-
isClosedInternal
protected boolean isClosedInternal()Tests the raw internal closed state.- Returns:
- the raw internal closed state.
-
isReadOnly
- Specified by:
isReadOnlyin interfaceConnection- Throws:
SQLException
-
isValid
Tests if the connection has not been closed and is still valid.- Parameters:
timeout- The duration to wait for the database operation used to validate the connection to complete.- Returns:
- See
Connection.isValid(int). - Throws:
SQLException- SeeConnection.isValid(int).- Since:
- 2.10.0
- See Also:
-
isValid
Deprecated.UseisValid(Duration).- Specified by:
isValidin interfaceConnection- Throws:
SQLException
-
isWrapperFor
- Specified by:
isWrapperForin interfaceWrapper- Throws:
SQLException
-
nativeSQL
- Specified by:
nativeSQLin interfaceConnection- Throws:
SQLException
-
passivate
Clears the list of objects being traced by this object.- Throws:
SQLException- Thrown if not all traced objects were closed.
-
prepareCall
- Specified by:
prepareCallin interfaceConnection- Throws:
SQLException
-
prepareCall
public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) throws SQLException - Specified by:
prepareCallin interfaceConnection- Throws:
SQLException
-
prepareCall
public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException - Specified by:
prepareCallin interfaceConnection- Throws:
SQLException
-
prepareStatement
- Specified by:
prepareStatementin interfaceConnection- Throws:
SQLException
-
prepareStatement
- Specified by:
prepareStatementin interfaceConnection- Throws:
SQLException
-
prepareStatement
public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) throws SQLException - Specified by:
prepareStatementin interfaceConnection- Throws:
SQLException
-
prepareStatement
public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException - Specified by:
prepareStatementin interfaceConnection- Throws:
SQLException
-
prepareStatement
- Specified by:
prepareStatementin interfaceConnection- Throws:
SQLException
-
prepareStatement
- Specified by:
prepareStatementin interfaceConnection- Throws:
SQLException
-
releaseSavepoint
- Specified by:
releaseSavepointin interfaceConnection- Throws:
SQLException
-
rollback
- Specified by:
rollbackin interfaceConnection- Throws:
SQLException
-
rollback
- Specified by:
rollbackin interfaceConnection- Throws:
SQLException
-
setAutoCommit
- Specified by:
setAutoCommitin interfaceConnection- Throws:
SQLException
-
setCacheState
public void setCacheState(boolean cacheState) Sets whether to cache properties. The cached properties are:- auto-commit
- catalog
- schema
- read-only
- Parameters:
cacheState- The new value for the state caching flag
-
setCatalog
- Specified by:
setCatalogin interfaceConnection- Throws:
SQLException
-
setClientInfo
- Specified by:
setClientInfoin interfaceConnection- Throws:
SQLClientInfoException
-
setClientInfo
- Specified by:
setClientInfoin interfaceConnection- Throws:
SQLClientInfoException
-
setClosedInternal
protected void setClosedInternal(boolean closed) Sets the raw internal closed state.- Parameters:
closed- the raw internal closed state.
-
setDefaultQueryTimeout
Sets the default query timeout that will be used forStatements created from this connection.nullmeans that the driver default will be used.- Parameters:
defaultQueryTimeoutDuration- the new query timeout limit Duration; zero means there is no limit.- Since:
- 2.10.0
-
setDefaultQueryTimeout
Deprecated.Sets the default query timeout that will be used forStatements created from this connection.nullmeans that the driver default will be used.- Parameters:
defaultQueryTimeoutSeconds- the new query timeout limit in seconds; zero means there is no limit.
-
setDelegate
Sets my delegate.- Parameters:
connection- my delegate, may be null.
-
setHoldability
- Specified by:
setHoldabilityin interfaceConnection- Throws:
SQLException
-
setNetworkTimeout
- Specified by:
setNetworkTimeoutin interfaceConnection- Throws:
SQLException
-
setReadOnly
- Specified by:
setReadOnlyin interfaceConnection- Throws:
SQLException
-
setSavepoint
- Specified by:
setSavepointin interfaceConnection- Throws:
SQLException
-
setSavepoint
- Specified by:
setSavepointin interfaceConnection- Throws:
SQLException
-
setSchema
- Specified by:
setSchemain interfaceConnection- Throws:
SQLException
-
setTransactionIsolation
- Specified by:
setTransactionIsolationin interfaceConnection- Throws:
SQLException
-
setTypeMap
- Specified by:
setTypeMapin interfaceConnection- Throws:
SQLException
-
toString
-
unwrap
- Specified by:
unwrapin interfaceWrapper- Throws:
SQLException
-
getDefaultQueryTimeoutDuration().