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

# Class ManagedDataSource<C extends Connection>

java.lang.Object
org.apache.tomcat.dbcp.dbcp2.PoolingDataSource<C>
org.apache.tomcat.dbcp.dbcp2.managed.ManagedDataSource<C>

Type Parameters:
  `C` - The kind of `Connection` to manage.

All Implemented Interfaces:
  `AutoCloseable`, `Wrapper`, `CommonDataSource`, `DataSource`

public class ManagedDataSource<C extends Connection> extends PoolingDataSource<C>
The ManagedDataSource is a PoolingDataSource that creates ManagedConnections.

Since:
  2.0

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ManagedDataSource(ObjectPool<C> pool, TransactionRegistry transactionRegistry)`
  Creates a ManagedDataSource which obtains connections from the specified pool and manages them using the specified transaction registry.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Connection`
  `getConnection()`
  Returns a `Connection` from my pool, according to the contract specified by `ObjectPool.borrowObject()`.
  `TransactionRegistry`
  `getTransactionRegistry()`
  Gets the transaction registry.
  `void`
  `setTransactionRegistry(TransactionRegistry transactionRegistry)`
  Sets the transaction registry from the XAConnectionFactory used to create the pool.

  ### Methods inherited from class org.apache.tomcat.dbcp.dbcp2.PoolingDataSource

  `close, getConnection, getLoginTimeout, getLogWriter, getParentLogger, getPool, isAccessToUnderlyingConnectionAllowed, isWrapperFor, setAccessToUnderlyingConnectionAllowed, setLoginTimeout, setLogWriter, unwrap`

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

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

  ### Methods inherited from interface javax.sql.CommonDataSource

  `createShardingKeyBuilder`

  ### Methods inherited from interface javax.sql.DataSource

  `createConnectionBuilder`

- ## Constructor Details

  - ### ManagedDataSource

    public ManagedDataSource(ObjectPool<C> pool, TransactionRegistry transactionRegistry)
    Creates a ManagedDataSource which obtains connections from the specified pool and manages them using the specified transaction registry. The TransactionRegistry must be the transaction registry obtained from the XAConnectionFactory used to create the connection pool. If not, an error will occur when attempting to use the connection in a global transaction because the XAResource object associated with the connection will be unavailable.
    Parameters:
      `pool` - the connection pool
      `transactionRegistry` - the transaction registry obtained from the XAConnectionFactory used to create the connection pool object factory

- ## Method Details

  - ### getConnection

    public Connection getConnection() throws SQLException
    Description copied from class: `PoolingDataSource`
    Returns a `Connection` from my pool, according to the contract specified by `ObjectPool.borrowObject()`.
    Specified by:
      `getConnection` in interface `DataSource`
    Overrides:
      `getConnection` in class `PoolingDataSource<C extends Connection>`
    Throws:
      `SQLException`

  - ### getTransactionRegistry

    public TransactionRegistry getTransactionRegistry()
    Gets the transaction registry.
    Returns:
      The transaction registry.
    Since:
      2.6.0
    See Also:
      - `setTransactionRegistry(TransactionRegistry)`

  - ### setTransactionRegistry

    public void setTransactionRegistry(TransactionRegistry transactionRegistry)
    Sets the transaction registry from the XAConnectionFactory used to create the pool. The transaction registry can only be set once using either a connector or this setter method.
    Parameters:
      `transactionRegistry` - the transaction registry acquired from the XAConnectionFactory used to create the pool