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