Package org.apache.tomcat.dbcp.dbcp2.managed

## Class TransactionContext

- java.lang.Object
- - org.apache.tomcat.dbcp.dbcp2.managed.TransactionContext

    public class TransactionContext
    extends java.lang.Object

TransactionContext represents the association between a single XAConnectionFactory and a Transaction. This context contains a single shared connection which should be used by all ManagedConnections for the XAConnectionFactory, the ability to listen for the transaction completion event, and a method to check the status of the transaction.

Since:
  2.0

### Constructor Summary

Constructors
`TransactionContext​(TransactionRegistry transactionRegistry, Transaction transaction)` Provided for backwards compatibility
`TransactionContext​(TransactionRegistry transactionRegistry, Transaction transaction, TransactionSynchronizationRegistry transactionSynchronizationRegistry)` Creates a TransactionContext for the specified Transaction and TransactionRegistry.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `addTransactionContextListener​(TransactionContextListener listener)` Adds a listener for transaction completion events.
`void` `completeTransaction()` Sets the transaction complete flag to true.
`java.sql.Connection` `getSharedConnection()` Gets the connection shared by all ManagedConnections in the transaction.
`boolean` `isActive()` True if the transaction is active or marked for rollback only.
`boolean` `isTransactionComplete()` Gets the transaction complete flag to true.
`void` `setSharedConnection​(java.sql.Connection sharedConnection)` Sets the shared connection for this transaction.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### TransactionContext

    public TransactionContext​(TransactionRegistry transactionRegistry,
                              Transaction transaction)

Provided for backwards compatibility

Parameters:
  `transactionRegistry` - the TransactionRegistry used to obtain the XAResource for the shared connection
  `transaction` - the transaction

#### TransactionContext

    public TransactionContext​(TransactionRegistry transactionRegistry,
                              Transaction transaction,
                              TransactionSynchronizationRegistry transactionSynchronizationRegistry)

Creates a TransactionContext for the specified Transaction and TransactionRegistry. The TransactionRegistry is used to obtain the XAResource for the shared connection when it is enlisted in the transaction.

Parameters:
  `transactionRegistry` - the TransactionRegistry used to obtain the XAResource for the shared connection
  `transaction` - the transaction
  `transactionSynchronizationRegistry` - The optional TSR to register synchronizations with
Since:
  2.6.0

### Method Detail

#### addTransactionContextListener

    public void addTransactionContextListener​(TransactionContextListener listener)
                                       throws java.sql.SQLException

Adds a listener for transaction completion events.

Parameters:
  `listener` - the listener to add
Throws:
  `java.sql.SQLException` - if a problem occurs adding the listener to the transaction

#### completeTransaction

    public void completeTransaction()

Sets the transaction complete flag to true.

Since:
  2.4.0

#### getSharedConnection

    public java.sql.Connection getSharedConnection()

Gets the connection shared by all ManagedConnections in the transaction. Specifically, connection using the same XAConnectionFactory from which the TransactionRegistry was obtained.

Returns:
  the shared connection for this transaction

#### isActive

    public boolean isActive()
                     throws java.sql.SQLException

True if the transaction is active or marked for rollback only.

Returns:
  true if the transaction is active or marked for rollback only; false otherwise
Throws:
  `java.sql.SQLException` - if a problem occurs obtaining the transaction status

#### isTransactionComplete

    public boolean isTransactionComplete()

Gets the transaction complete flag to true.

Returns:
  The transaction complete flag.
Since:
  2.4.0

#### setSharedConnection

    public void setSharedConnection​(java.sql.Connection sharedConnection)
                             throws java.sql.SQLException

Sets the shared connection for this transaction. The shared connection is enlisted in the transaction.

Parameters:
  `sharedConnection` - the shared connection
Throws:
  `java.sql.SQLException` - if a shared connection is already set, if XAResource for the connection could not be found in the transaction registry, or if there was a problem enlisting the connection in the transaction