|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.commons.dbcp.AbandonedTrace org.apache.commons.dbcp.DelegatingConnection org.apache.commons.dbcp.managed.ManagedConnection
public class ManagedConnection
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.
Nested Class Summary | |
---|---|
protected class |
ManagedConnection.CompletionListener
Delegates to transactionComplete()
for transaction completion events. |
Field Summary |
---|
Fields inherited from class org.apache.commons.dbcp.DelegatingConnection |
---|
_closed, _conn |
Fields inherited from interface java.sql.Connection |
---|
TRANSACTION_NONE, TRANSACTION_READ_COMMITTED, TRANSACTION_READ_UNCOMMITTED, TRANSACTION_REPEATABLE_READ, TRANSACTION_SERIALIZABLE |
Constructor Summary | |
---|---|
ManagedConnection(ObjectPool pool,
TransactionRegistry transactionRegistry,
boolean accessToUnderlyingConnectionAllowed)
|
Method Summary | |
---|---|
protected void |
checkOpen()
|
void |
close()
Closes the underlying connection, and close any Statements that were not explicitly closed. |
void |
commit()
|
Connection |
getDelegate()
Returns my underlying Connection . |
Connection |
getInnermostDelegate()
If my underlying Connection is not a
DelegatingConnection, returns it,
otherwise recursively invokes this method on
my delegate. |
boolean |
isAccessToUnderlyingConnectionAllowed()
If false, getDelegate() and getInnermostDelegate() will return null. |
void |
rollback()
|
void |
setAutoCommit(boolean autoCommit)
|
void |
setReadOnly(boolean readOnly)
|
protected void |
transactionComplete()
|
Methods inherited from class org.apache.commons.dbcp.AbandonedTrace |
---|
addTrace, clearTrace, getConfig, getLastUsed, getTrace, printStackTrace, removeTrace, setLastUsed, setLastUsed, setStackTrace |
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public ManagedConnection(ObjectPool pool, TransactionRegistry transactionRegistry, boolean accessToUnderlyingConnectionAllowed) throws SQLException
SQLException
Method Detail |
---|
protected void checkOpen() throws SQLException
checkOpen
in class DelegatingConnection
SQLException
public void close() throws SQLException
DelegatingConnection
close
in interface Connection
close
in class DelegatingConnection
SQLException
protected void transactionComplete()
public void setAutoCommit(boolean autoCommit) throws SQLException
setAutoCommit
in interface Connection
setAutoCommit
in class DelegatingConnection
SQLException
public void commit() throws SQLException
commit
in interface Connection
commit
in class DelegatingConnection
SQLException
public void rollback() throws SQLException
rollback
in interface Connection
rollback
in class DelegatingConnection
SQLException
public void setReadOnly(boolean readOnly) throws SQLException
setReadOnly
in interface Connection
setReadOnly
in class DelegatingConnection
SQLException
public boolean isAccessToUnderlyingConnectionAllowed()
public Connection getDelegate()
DelegatingConnection
Connection
.
getDelegate
in class DelegatingConnection
Connection
.public Connection getInnermostDelegate()
DelegatingConnection
Connection
is 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
.
getInnermostDelegate
in class DelegatingConnection
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |