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

## Class TransactionRegistry

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

-     public class TransactionRegistry
      extends Object

  TransactionRegistry tracks Connections and XAResources in a transacted environment for a single XAConnectionFactory.

  The TransactionRegistry hides the details of transaction processing from the existing DBCP pooling code, and gives the ManagedConnection a way to enlist connections in a transaction, allowing for the maximal rescue of DBCP.

  Since:
    2.0

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `TransactionRegistry​(TransactionManager transactionManager)` | Provided for backwards compatibility
    `TransactionRegistry​(TransactionManager transactionManager, TransactionSynchronizationRegistry transactionSynchronizationRegistry)` | Creates a TransactionRegistry for the specified transaction manager.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `TransactionContext` | `getActiveTransactionContext()` | Gets the active TransactionContext or null if not Transaction is active.
    `XAResource` | `getXAResource​(Connection connection)` | Gets the XAResource registered for the connection.
    `void` | `registerConnection​(Connection connection, XAResource xaResource)` | Registers the association between a Connection and a XAResource.
    `void` | `unregisterConnection​(Connection connection)` | Unregisters a destroyed connection from `TransactionRegistry`.

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

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

- - ### Constructor Detail

    - #### TransactionRegistry

          public TransactionRegistry​(TransactionManager transactionManager)

      Provided for backwards compatibility
      Parameters:
        `transactionManager` - the transaction manager used to enlist connections

    - #### TransactionRegistry

          public TransactionRegistry​(TransactionManager transactionManager,
                                     TransactionSynchronizationRegistry transactionSynchronizationRegistry)

      Creates a TransactionRegistry for the specified transaction manager.
      Parameters:
        `transactionManager` - the transaction manager used to enlist connections.
        `transactionSynchronizationRegistry` - The optional TSR to register synchronizations with
      Since:
        2.6.0

  - ### Method Detail

    - #### getActiveTransactionContext

          public TransactionContext getActiveTransactionContext()
                                                         throws SQLException

      Gets the active TransactionContext or null if not Transaction is active.
      Returns:
        The active TransactionContext or null if no Transaction is active.
      Throws:
        `SQLException` - Thrown when an error occurs while fetching the transaction.

    - #### getXAResource

          public XAResource getXAResource​(Connection connection)
                                   throws SQLException

      Gets the XAResource registered for the connection.
      Parameters:
        `connection` - the connection
      Returns:
        The XAResource registered for the connection; never null.
      Throws:
        `SQLException` - Thrown when the connection does not have a registered XAResource.

    - #### registerConnection

          public void registerConnection​(Connection connection,
                                         XAResource xaResource)

      Registers the association between a Connection and a XAResource. When a connection is enlisted in a transaction, it is actually the XAResource that is given to the transaction manager.
      Parameters:
        `connection` - The JDBC connection.
        `xaResource` - The XAResource which managed the connection within a transaction.

    - #### unregisterConnection

          public void unregisterConnection​(Connection connection)

      Unregisters a destroyed connection from `TransactionRegistry`.
      Parameters:
        `connection` - A destroyed connection from `TransactionRegistry`.