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

  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 Details

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

  - ### 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`.