# Class PoolingDataSource<C extends Connection>

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

Type Parameters:
  `C` - The connection type

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

Direct Known Subclasses:
  `ManagedDataSource`

public class PoolingDataSource<C extends Connection> extends Object implements DataSource, AutoCloseable
A simple `DataSource` implementation that obtains `Connection`s from the specified `ObjectPool`.

Since:
  2.0

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `PoolingDataSource(ObjectPool<C> pool)`
  Constructs a new instance backed by the given connection pool.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `close()`
  Closes and free all `Connection`s from the pool.
  `Connection`
  `getConnection()`
  Returns a `Connection` from my pool, according to the contract specified by `ObjectPool.borrowObject()`.
  `Connection`
  `getConnection(String userName, String password)`
  Throws `UnsupportedOperationException`
  `int`
  `getLoginTimeout()`
  Throws `UnsupportedOperationException`.
  `PrintWriter`
  `getLogWriter()`
  Returns my log writer.
  `Logger`
  `getParentLogger()`
  `protected ObjectPool<C>`
  `getPool()`
  Gets the backing object pool.
  `boolean`
  `isAccessToUnderlyingConnectionAllowed()`
  Returns the value of the accessToUnderlyingConnectionAllowed property.
  `boolean`
  `isWrapperFor(Class<?> iface)`
  `void`
  `setAccessToUnderlyingConnectionAllowed(boolean allow)`
  Sets the value of the accessToUnderlyingConnectionAllowed property.
  `void`
  `setLoginTimeout(int seconds)`
  Throws `UnsupportedOperationException`.
  `void`
  `setLogWriter(PrintWriter out)`
  Sets my log writer.
  `<T> T`
  `unwrap(Class<T> iface)`

  ### Methods inherited from class Object

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

  ### Methods inherited from interface CommonDataSource

  `createShardingKeyBuilder`

  ### Methods inherited from interface DataSource

  `createConnectionBuilder`

- ## Constructor Details

  - ### PoolingDataSource

    public PoolingDataSource(ObjectPool<C> pool)
    Constructs a new instance backed by the given connection pool.
    Parameters:
      `pool` - the given connection pool.

- ## Method Details

  - ### close

    public void close() throws SQLException
    Closes and free all `Connection`s from the pool.
    Specified by:
      `close` in interface `AutoCloseable`
    Throws:
      `SQLException`
    Since:
      2.1

  - ### getConnection

    public Connection getConnection() throws SQLException
    Returns a `Connection` from my pool, according to the contract specified by `ObjectPool.borrowObject()`.
    Specified by:
      `getConnection` in interface `DataSource`
    Throws:
      `SQLException`

  - ### getConnection

    public Connection getConnection(String userName, String password) throws SQLException
    Throws `UnsupportedOperationException`
    Specified by:
      `getConnection` in interface `DataSource`
    Throws:
      `UnsupportedOperationException` - always thrown
      `SQLException`

  - ### getLoginTimeout

    public int getLoginTimeout()
    Throws `UnsupportedOperationException`.
    Specified by:
      `getLoginTimeout` in interface `CommonDataSource`
    Specified by:
      `getLoginTimeout` in interface `DataSource`
    Throws:
      `UnsupportedOperationException` - As this implementation does not support this feature.

  - ### getLogWriter

    public PrintWriter getLogWriter()
    Returns my log writer.
    Specified by:
      `getLogWriter` in interface `CommonDataSource`
    Specified by:
      `getLogWriter` in interface `DataSource`
    Returns:
      my log writer
    See Also:
      - `DataSource.getLogWriter()`

  - ### getParentLogger

    public Logger getParentLogger() throws SQLFeatureNotSupportedException
    Specified by:
      `getParentLogger` in interface `CommonDataSource`
    Throws:
      `SQLFeatureNotSupportedException`

  - ### getPool

    protected ObjectPool<C> getPool()
    Gets the backing object pool.
    Returns:
      the backing object pool.

  - ### isAccessToUnderlyingConnectionAllowed

    public boolean isAccessToUnderlyingConnectionAllowed()
    Returns the value of the accessToUnderlyingConnectionAllowed property.
    Returns:
      true if access to the underlying `Connection` is allowed, false otherwise.

  - ### isWrapperFor

    public boolean isWrapperFor(Class<?> iface) throws SQLException
    Specified by:
      `isWrapperFor` in interface `Wrapper`
    Throws:
      `SQLException`

  - ### setAccessToUnderlyingConnectionAllowed

    public void setAccessToUnderlyingConnectionAllowed(boolean allow)
    Sets the value of the accessToUnderlyingConnectionAllowed property. It controls if the PoolGuard allows access to the underlying connection. (Default: false)
    Parameters:
      `allow` - Access to the underlying connection is granted when true.

  - ### setLoginTimeout

    public void setLoginTimeout(int seconds)
    Throws `UnsupportedOperationException`.
    Specified by:
      `setLoginTimeout` in interface `CommonDataSource`
    Specified by:
      `setLoginTimeout` in interface `DataSource`
    Throws:
      `UnsupportedOperationException` - As this implementation does not support this feature.

  - ### setLogWriter

    public void setLogWriter(PrintWriter out)
    Sets my log writer.
    Specified by:
      `setLogWriter` in interface `CommonDataSource`
    Specified by:
      `setLogWriter` in interface `DataSource`
    See Also:
      - `DataSource.setLogWriter(PrintWriter)`

  - ### unwrap

    public <T> T unwrap(Class<T> iface) throws SQLException
    Specified by:
      `unwrap` in interface `Wrapper`
    Throws:
      `SQLException`