# Class TransactionContext

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

public class TransactionContext extends 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
  Constructor
  Description
  `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

  Modifier and Type
  Method
  Description
  `void`
  `addTransactionContextListener(TransactionContextListener listener)`
  Adds a listener for transaction completion events.
  `void`
  `completeTransaction()`
  Sets the transaction complete flag to true.
  `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(Connection sharedConnection)`
  Sets the shared connection for this transaction.

  ### Methods inherited from class Object

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

- ## Constructor Details

  - ### 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 Details

  - ### addTransactionContextListener

    public void addTransactionContextListener(TransactionContextListener listener) throws SQLException
    Adds a listener for transaction completion events.
    Parameters:
      `listener` - the listener to add
    Throws:
      `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 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 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:
      `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(Connection sharedConnection) throws SQLException
    Sets the shared connection for this transaction. The shared connection is enlisted in the transaction.
    Parameters:
      `sharedConnection` - the shared connection
    Throws:
      `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