Class ManagedConnection<C extends Connection>
java.lang.Object
org.apache.tomcat.dbcp.dbcp2.AbandonedTrace
org.apache.tomcat.dbcp.dbcp2.DelegatingConnection<C>
org.apache.tomcat.dbcp.dbcp2.managed.ManagedConnection<C>
- Type Parameters:
- C- the Connection type
- All Implemented Interfaces:
- AutoCloseable,- Connection,- Wrapper,- TrackedUse
ManagedConnection is responsible for managing a database connection in a transactional environment (typically called
 "Container Managed"). A managed connection operates like any other connection when no global transaction (a.k.a. XA
 transaction or JTA Transaction) is in progress. When a global transaction is active a single physical connection to
 the database is used by all ManagedConnections accessed in the scope of the transaction. Connection sharing means
 that all data access during a transaction has a consistent view of the database. When the global transaction is
 committed or rolled back the enlisted connections are committed or rolled back. Typically upon transaction
 completion, a connection returns to the auto commit setting in effect before being enlisted in the transaction, but
 some vendors do not properly implement this.
 
When enlisted in a transaction the setAutoCommit(), commit(), rollback(), and setReadOnly() methods throw a SQLException. This is necessary to assure that the transaction completes as a single unit.
- Since:
- 2.0
- 
Nested Class SummaryNested ClassesModifier and TypeClassDescriptionprotected classDelegates totransactionComplete()for transaction completion events.
- 
Field SummaryFields inherited from interface java.sql.ConnectionTRANSACTION_NONE, TRANSACTION_READ_COMMITTED, TRANSACTION_READ_UNCOMMITTED, TRANSACTION_REPEATABLE_READ, TRANSACTION_SERIALIZABLE
- 
Constructor SummaryConstructorsConstructorDescriptionManagedConnection(ObjectPool<C> pool, TransactionRegistry transactionRegistry, boolean accessToUnderlyingConnectionAllowed) Constructs a new instance responsible for managing a database connection in a transactional environment.
- 
Method SummaryModifier and TypeMethodDescriptionprotected voidvoidclose()Closes the underlying connection, and close any Statements that were not explicitly closed.voidcommit()Returns my underlyingConnection.If my underlyingConnectionis not aDelegatingConnection, returns it, otherwise recursively invokes this method on my delegate.booleanIf false, getDelegate() and getInnermostDelegate() will return null.voidrollback()voidsetAutoCommit(boolean autoCommit) voidsetReadOnly(boolean readOnly) protected voidCompletes the transaction.Methods inherited from class org.apache.tomcat.dbcp.dbcp2.DelegatingConnectionabort, activate, clearCachedState, clearWarnings, closeInternal, createArrayOf, createBlob, createClob, createNClob, createSQLXML, createStatement, createStatement, createStatement, createStruct, getAutoCommit, getCacheState, getCatalog, getClientInfo, getClientInfo, getDefaultQueryTimeout, getDefaultQueryTimeoutDuration, getDelegateInternal, getHoldability, getInnermostDelegateInternal, getMetaData, getNetworkTimeout, getSchema, getTransactionIsolation, getTypeMap, getWarnings, handleException, handleExceptionNoThrow, innermostDelegateEquals, isClosed, isClosedInternal, isReadOnly, isValid, isValid, isWrapperFor, nativeSQL, passivate, prepareCall, prepareCall, prepareCall, prepareStatement, prepareStatement, prepareStatement, prepareStatement, prepareStatement, prepareStatement, releaseSavepoint, rollback, setCacheState, setCatalog, setClientInfo, setClientInfo, setClosedInternal, setDefaultQueryTimeout, setDefaultQueryTimeout, setDelegate, setHoldability, setNetworkTimeout, setSavepoint, setSavepoint, setSchema, setTransactionIsolation, setTypeMap, toString, unwrapMethods inherited from class org.apache.tomcat.dbcp.dbcp2.AbandonedTraceaddTrace, clearTrace, close, getLastUsed, getLastUsedInstant, getTrace, removeThisTrace, removeTrace, setLastUsed, setLastUsed, setLastUsedMethods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.sql.ConnectionbeginRequest, endRequest, setShardingKey, setShardingKey, setShardingKeyIfValid, setShardingKeyIfValid
- 
Constructor Details- 
ManagedConnectionpublic ManagedConnection(ObjectPool<C> pool, TransactionRegistry transactionRegistry, boolean accessToUnderlyingConnectionAllowed) throws SQLException Constructs a new instance responsible for managing a database connection in a transactional environment.- Parameters:
- pool- The connection pool.
- transactionRegistry- The transaction registry.
- accessToUnderlyingConnectionAllowed- Whether or not to allow access to the underlying Connection.
- Throws:
- SQLException- Thrown when there is problem managing transactions.
 
 
- 
- 
Method Details- 
checkOpen- Overrides:
- checkOpenin class- DelegatingConnection<C extends Connection>
- Throws:
- SQLException
 
- 
closeDescription copied from class:DelegatingConnectionCloses the underlying connection, and close any Statements that were not explicitly closed. Sub-classes that override this method must:- Call DelegatingConnection.passivate()
- Call close (or the equivalent appropriate action) on the wrapped connection
- Set closedtofalse
 - Specified by:
- closein interface- AutoCloseable
- Specified by:
- closein interface- Connection
- Overrides:
- closein class- DelegatingConnection<C extends Connection>
- Throws:
- SQLException- Ignored here, for subclasses.
 
- Call 
- 
commit- Specified by:
- commitin interface- Connection
- Overrides:
- commitin class- DelegatingConnection<C extends Connection>
- Throws:
- SQLException
 
- 
getDelegateDescription copied from class:DelegatingConnectionReturns my underlyingConnection.- Overrides:
- getDelegatein class- DelegatingConnection<C extends Connection>
- Returns:
- my underlying Connection.
 
- 
getInnermostDelegateDescription copied from class:DelegatingConnectionIf 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.- Overrides:
- getInnermostDelegatein class- DelegatingConnection<C extends Connection>
- Returns:
- innermost delegate.
 
- 
getTransactionContext- Returns:
- The transaction context.
- Since:
- 2.6.0
 
- 
getTransactionRegistry- Returns:
- The transaction registry.
- Since:
- 2.6.0
 
- 
isAccessToUnderlyingConnectionAllowedpublic boolean isAccessToUnderlyingConnectionAllowed()If false, getDelegate() and getInnermostDelegate() will return null.- Returns:
- if false, getDelegate() and getInnermostDelegate() will return null
 
- 
rollback- Specified by:
- rollbackin interface- Connection
- Overrides:
- rollbackin class- DelegatingConnection<C extends Connection>
- Throws:
- SQLException
 
- 
setAutoCommit- Specified by:
- setAutoCommitin interface- Connection
- Overrides:
- setAutoCommitin class- DelegatingConnection<C extends Connection>
- Throws:
- SQLException
 
- 
setReadOnly- Specified by:
- setReadOnlyin interface- Connection
- Overrides:
- setReadOnlyin class- DelegatingConnection<C extends Connection>
- Throws:
- SQLException
 
- 
transactionCompleteprotected void transactionComplete()Completes the transaction.
 
-