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
ConstructorDescriptionDelegatingConnection
(C connection) Creates a wrapper for the Connection which traces this Connection in the AbandonedObjectPool. -
Method Summary
Modifier and TypeMethodDescriptionvoid
protected void
activate()
protected void
void
Clears the cached state.void
void
close()
Closes the underlying connection, and close any Statements that were not explicitly closed.protected final void
void
commit()
createArrayOf
(String typeName, Object[] elements) createStatement
(int resultSetType, int resultSetConcurrency) createStatement
(int resultSetType, int resultSetConcurrency, int resultSetHoldability) createStruct
(String typeName, Object[] attributes) boolean
boolean
Returns the state caching flag.getClientInfo
(String name) Deprecated.Gets the default query timeout that will be used forStatement
s created from this connection.Returns my underlyingConnection
.protected final C
Gets the delegate connection.int
If my underlyingConnection
is not aDelegatingConnection
, returns it, otherwise recursively invokes this method on my delegate.final Connection
Although this method is public, it is part of the internal API and should not be used by clients.int
int
protected void
Handles the given exception by throwing it.protected <T extends Throwable>
THandles the givenSQLException
.boolean
Compares innermost delegate to the given connection.boolean
isClosed()
protected boolean
boolean
boolean
isValid
(int timeoutSeconds) Deprecated.UseisValid(Duration)
.boolean
Tests if the connection has not been closed and is still valid.boolean
isWrapperFor
(Class<?> iface) protected void
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) void
releaseSavepoint
(Savepoint savepoint) void
rollback()
void
void
setAutoCommit
(boolean autoCommit) void
setCacheState
(boolean cacheState) Sets the state caching flag.void
setCatalog
(String catalog) void
setClientInfo
(String name, String value) void
setClientInfo
(Properties properties) protected void
setClosedInternal
(boolean closed) void
setDefaultQueryTimeout
(Integer defaultQueryTimeoutSeconds) Deprecated.void
setDefaultQueryTimeout
(Duration defaultQueryTimeoutDuration) Sets the default query timeout that will be used forStatement
s created from this connection.void
setDelegate
(C connection) Sets my delegate.void
setHoldability
(int holdability) void
setNetworkTimeout
(Executor executor, int milliseconds) void
setReadOnly
(boolean readOnly) setSavepoint
(String name) void
void
setTransactionIsolation
(int level) void
setTypeMap
(Map<String, Class<?>> map) toString()
Returns a string representation of the metadata associated with the innermost delegate connection.<T> T
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
-
Constructor Details
-
DelegatingConnection
Creates a wrapper for the Connection which traces this Connection in the AbandonedObjectPool.- Parameters:
connection
- theConnection
to delegate all calls to, may be null (seeManagedConnection
).
-
-
Method Details
-
abort
- Specified by:
abort
in interfaceConnection
- Throws:
SQLException
-
activate
protected void activate() -
checkOpen
- Throws:
SQLException
-
clearCachedState
public void clearCachedState()Clears the cached state. Call when you know that the underlying connection may have been accessed directly. -
clearWarnings
- Specified by:
clearWarnings
in 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
closed
tofalse
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceConnection
- Overrides:
close
in classAbandonedTrace
- Throws:
SQLException
- Ignored here, for subclasses.
- Call
-
closeInternal
- Throws:
SQLException
-
commit
- Specified by:
commit
in interfaceConnection
- Throws:
SQLException
-
createArrayOf
- Specified by:
createArrayOf
in interfaceConnection
- Throws:
SQLException
-
createBlob
- Specified by:
createBlob
in interfaceConnection
- Throws:
SQLException
-
createClob
- Specified by:
createClob
in interfaceConnection
- Throws:
SQLException
-
createNClob
- Specified by:
createNClob
in interfaceConnection
- Throws:
SQLException
-
createSQLXML
- Specified by:
createSQLXML
in interfaceConnection
- Throws:
SQLException
-
createStatement
- Specified by:
createStatement
in interfaceConnection
- Throws:
SQLException
-
createStatement
- Specified by:
createStatement
in interfaceConnection
- Throws:
SQLException
-
createStatement
public Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException - Specified by:
createStatement
in interfaceConnection
- Throws:
SQLException
-
createStruct
- Specified by:
createStruct
in interfaceConnection
- Throws:
SQLException
-
getAutoCommit
- Specified by:
getAutoCommit
in interfaceConnection
- Throws:
SQLException
-
getCacheState
public boolean getCacheState()Returns the state caching flag.- Returns:
- the state caching flag
-
getCatalog
- Specified by:
getCatalog
in interfaceConnection
- Throws:
SQLException
-
getClientInfo
- Specified by:
getClientInfo
in interfaceConnection
- Throws:
SQLException
-
getClientInfo
- Specified by:
getClientInfo
in interfaceConnection
- Throws:
SQLException
-
getDefaultQueryTimeout
Deprecated.Gets the default query timeout that will be used forStatement
s created from this connection.null
means 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:
getHoldability
in interfaceConnection
- Throws:
SQLException
-
getInnermostDelegate
If my underlyingConnection
is 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
, ornull
when no non-DelegatingConnection
delegate can be found by traversing this chain.This method is useful when you may have nested
DelegatingConnection
s, 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:
getMetaData
in interfaceConnection
- Throws:
SQLException
-
getNetworkTimeout
- Specified by:
getNetworkTimeout
in interfaceConnection
- Throws:
SQLException
-
getSchema
- Specified by:
getSchema
in interfaceConnection
- Throws:
SQLException
-
getTransactionIsolation
- Specified by:
getTransactionIsolation
in interfaceConnection
- Throws:
SQLException
-
getTypeMap
- Specified by:
getTypeMap
in interfaceConnection
- Throws:
SQLException
-
getWarnings
- Specified by:
getWarnings
in 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:
isClosed
in interfaceConnection
- Throws:
SQLException
-
isClosedInternal
protected boolean isClosedInternal() -
isReadOnly
- Specified by:
isReadOnly
in 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:
isValid
in interfaceConnection
- Throws:
SQLException
-
isWrapperFor
- Specified by:
isWrapperFor
in interfaceWrapper
- Throws:
SQLException
-
nativeSQL
- Specified by:
nativeSQL
in interfaceConnection
- Throws:
SQLException
-
passivate
- Throws:
SQLException
-
prepareCall
- Specified by:
prepareCall
in interfaceConnection
- Throws:
SQLException
-
prepareCall
public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) throws SQLException - Specified by:
prepareCall
in interfaceConnection
- Throws:
SQLException
-
prepareCall
public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException - Specified by:
prepareCall
in interfaceConnection
- Throws:
SQLException
-
prepareStatement
- Specified by:
prepareStatement
in interfaceConnection
- Throws:
SQLException
-
prepareStatement
- Specified by:
prepareStatement
in interfaceConnection
- Throws:
SQLException
-
prepareStatement
public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) throws SQLException - Specified by:
prepareStatement
in interfaceConnection
- Throws:
SQLException
-
prepareStatement
public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException - Specified by:
prepareStatement
in interfaceConnection
- Throws:
SQLException
-
prepareStatement
- Specified by:
prepareStatement
in interfaceConnection
- Throws:
SQLException
-
prepareStatement
- Specified by:
prepareStatement
in interfaceConnection
- Throws:
SQLException
-
releaseSavepoint
- Specified by:
releaseSavepoint
in interfaceConnection
- Throws:
SQLException
-
rollback
- Specified by:
rollback
in interfaceConnection
- Throws:
SQLException
-
rollback
- Specified by:
rollback
in interfaceConnection
- Throws:
SQLException
-
setAutoCommit
- Specified by:
setAutoCommit
in interfaceConnection
- Throws:
SQLException
-
setCacheState
public void setCacheState(boolean cacheState) Sets the state caching flag.- Parameters:
cacheState
- The new value for the state caching flag
-
setCatalog
- Specified by:
setCatalog
in interfaceConnection
- Throws:
SQLException
-
setClientInfo
- Specified by:
setClientInfo
in interfaceConnection
- Throws:
SQLClientInfoException
-
setClientInfo
- Specified by:
setClientInfo
in interfaceConnection
- Throws:
SQLClientInfoException
-
setClosedInternal
protected void setClosedInternal(boolean closed) -
setDefaultQueryTimeout
Sets the default query timeout that will be used forStatement
s created from this connection.null
means 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 forStatement
s created from this connection.null
means 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:
setHoldability
in interfaceConnection
- Throws:
SQLException
-
setNetworkTimeout
- Specified by:
setNetworkTimeout
in interfaceConnection
- Throws:
SQLException
-
setReadOnly
- Specified by:
setReadOnly
in interfaceConnection
- Throws:
SQLException
-
setSavepoint
- Specified by:
setSavepoint
in interfaceConnection
- Throws:
SQLException
-
setSavepoint
- Specified by:
setSavepoint
in interfaceConnection
- Throws:
SQLException
-
setSchema
- Specified by:
setSchema
in interfaceConnection
- Throws:
SQLException
-
setTransactionIsolation
- Specified by:
setTransactionIsolation
in interfaceConnection
- Throws:
SQLException
-
setTypeMap
- Specified by:
setTypeMap
in interfaceConnection
- Throws:
SQLException
-
toString
-
unwrap
- Specified by:
unwrap
in interfaceWrapper
- Throws:
SQLException
-
getDefaultQueryTimeoutDuration()
.