Class ManagedConnection
java.lang.Object
org.apache.commons.dbcp.AbandonedTrace
org.apache.commons.dbcp.DelegatingConnection
org.apache.commons.dbcp.managed.ManagedConnection
- All Implemented Interfaces:
AutoCloseable, Connection, Wrapper
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.
- Version:
- $Revision$
- Author:
- Dain Sundstrom
-
Field Summary
Fields inherited from interface Connection
TRANSACTION_NONE, TRANSACTION_READ_COMMITTED, TRANSACTION_READ_UNCOMMITTED, TRANSACTION_REPEATABLE_READ, TRANSACTION_SERIALIZABLE -
Constructor Summary
ConstructorsConstructorDescriptionManagedConnection(org.apache.commons.pool.ObjectPool pool, TransactionRegistry transactionRegistry, boolean accessToUnderlyingConnectionAllowed) -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Closes the underlying connection, and close any Statements that were not explicitly closed.voidcommit()Returns my underlyingConnection.If my underlyingConnectionis not a DelegatingConnection, 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) Methods inherited from class DelegatingConnection
abort, clearWarnings, createArrayOf, createBlob, createClob, createNClob, createSQLXML, createStatement, createStatement, createStatement, createStruct, equals, getAutoCommit, getCatalog, getClientInfo, getClientInfo, getHoldability, getMetaData, getNetworkTimeout, getSchema, getTransactionIsolation, getTypeMap, getWarnings, hashCode, innermostDelegateEquals, isClosed, isReadOnly, isValid, isWrapperFor, nativeSQL, prepareCall, prepareCall, prepareCall, prepareStatement, prepareStatement, prepareStatement, prepareStatement, prepareStatement, prepareStatement, releaseSavepoint, rollback, setCatalog, setClientInfo, setClientInfo, setDelegate, setHoldability, setNetworkTimeout, setSavepoint, setSavepoint, setSchema, setTransactionIsolation, setTypeMap, toString, unwrapMethods inherited from class AbandonedTrace
printStackTraceMethods inherited from interface Connection
beginRequest, endRequest, setShardingKey, setShardingKey, setShardingKeyIfValid, setShardingKeyIfValid
-
Constructor Details
-
ManagedConnection
public ManagedConnection(org.apache.commons.pool.ObjectPool pool, TransactionRegistry transactionRegistry, boolean accessToUnderlyingConnectionAllowed) throws SQLException - Throws:
SQLException
-
-
Method Details
-
close
Description copied from class:DelegatingConnectionCloses the underlying connection, and close any Statements that were not explicitly closed.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceConnection- Overrides:
closein classDelegatingConnection- Throws:
SQLException
-
setAutoCommit
- Specified by:
setAutoCommitin interfaceConnection- Overrides:
setAutoCommitin classDelegatingConnection- Throws:
SQLException
-
commit
- Specified by:
commitin interfaceConnection- Overrides:
commitin classDelegatingConnection- Throws:
SQLException
-
rollback
- Specified by:
rollbackin interfaceConnection- Overrides:
rollbackin classDelegatingConnection- Throws:
SQLException
-
setReadOnly
- Specified by:
setReadOnlyin interfaceConnection- Overrides:
setReadOnlyin classDelegatingConnection- Throws:
SQLException
-
isAccessToUnderlyingConnectionAllowed
public boolean isAccessToUnderlyingConnectionAllowed()If false, getDelegate() and getInnermostDelegate() will return null.- Returns:
- if false, getDelegate() and getInnermostDelegate() will return null
-
getDelegate
Description copied from class:DelegatingConnectionReturns my underlyingConnection.- Overrides:
getDelegatein classDelegatingConnection- Returns:
- my underlying
Connection.
-
getInnermostDelegate
Description copied from class:DelegatingConnectionIf my underlyingConnectionis not a DelegatingConnection, returns it, otherwise recursively invokes this method on my delegate.Hence this method will return the first delegate that is not a DelegatingConnection, or null when no non-DelegatingConnection delegate 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 classDelegatingConnection
-