Package org.apache.tomcat.dbcp.dbcp2

## Class PoolingDataSource<C extends java.sql.Connection>

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

Type Parameters:
  `C` - The connection type

All Implemented Interfaces:
  `java.lang.AutoCloseable`, `java.sql.Wrapper`, `javax.sql.CommonDataSource`, `javax.sql.DataSource`

Direct Known Subclasses:
  `ManagedDataSource`

    public class PoolingDataSource<C extends java.sql.Connection>
    extends java.lang.Object
    implements javax.sql.DataSource, java.lang.AutoCloseable

A simple `DataSource` implementation that obtains `Connection`s from the specified `ObjectPool`.

Since:
  2.0

### Constructor Summary

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

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `close()` Closes and free all `Connection`s from the pool.
`java.sql.Connection` `getConnection()` Returns a `Connection` from my pool, according to the contract specified by `ObjectPool.borrowObject()`.
`java.sql.Connection` `getConnection​(java.lang.String uname, java.lang.String passwd)` Throws `UnsupportedOperationException`
`int` `getLoginTimeout()` Throws `UnsupportedOperationException`.
`java.io.PrintWriter` `getLogWriter()` Returns my log writer.
`java.util.logging.Logger` `getParentLogger()`
`protected ObjectPool<C>` `getPool()`
`boolean` `isAccessToUnderlyingConnectionAllowed()` Returns the value of the accessToUnderlyingConnectionAllowed property.
`boolean` `isWrapperFor​(java.lang.Class<?> iface)`
`void` `setAccessToUnderlyingConnectionAllowed​(boolean allow)` Sets the value of the accessToUnderlyingConnectionAllowed property.
`void` `setLoginTimeout​(int seconds)` Throws `UnsupportedOperationException`.
`void` `setLogWriter​(java.io.PrintWriter out)` Sets my log writer.
`<T> T` `unwrap​(java.lang.Class<T> iface)`

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

#### PoolingDataSource

    public PoolingDataSource​(ObjectPool<C> pool)

Constructs a new instance backed by the given connection pool.

Parameters:
  `pool` - the given connection pool.

### Method Detail

#### close

    public void close()
               throws java.lang.RuntimeException,
                      java.sql.SQLException

Closes and free all `Connection`s from the pool.

Specified by:
  `close` in interface `java.lang.AutoCloseable`
Throws:
  `java.lang.RuntimeException`
  `java.sql.SQLException`
Since:
  2.1

#### getConnection

    public java.sql.Connection getConnection()
                                      throws java.sql.SQLException

Returns a `Connection` from my pool, according to the contract specified by `ObjectPool.borrowObject()`.

Specified by:
  `getConnection` in interface `javax.sql.DataSource`
Throws:
  `java.sql.SQLException`

#### getConnection

    public java.sql.Connection getConnection​(java.lang.String uname,
                                             java.lang.String passwd)
                                      throws java.sql.SQLException

Throws `UnsupportedOperationException`

Specified by:
  `getConnection` in interface `javax.sql.DataSource`
Throws:
  `java.lang.UnsupportedOperationException` - always thrown
  `java.sql.SQLException`

#### getLoginTimeout

    public int getLoginTimeout()

Throws `UnsupportedOperationException`.

Specified by:
  `getLoginTimeout` in interface `javax.sql.CommonDataSource`
Specified by:
  `getLoginTimeout` in interface `javax.sql.DataSource`
Throws:
  `java.lang.UnsupportedOperationException` - As this implementation does not support this feature.

#### getLogWriter

    public java.io.PrintWriter getLogWriter()

Returns my log writer.

Specified by:
  `getLogWriter` in interface `javax.sql.CommonDataSource`
Specified by:
  `getLogWriter` in interface `javax.sql.DataSource`
Returns:
  my log writer
See Also:
  `DataSource.getLogWriter()`

#### getParentLogger

    public java.util.logging.Logger getParentLogger()
                                             throws java.sql.SQLFeatureNotSupportedException

Specified by:
  `getParentLogger` in interface `javax.sql.CommonDataSource`
Throws:
  `java.sql.SQLFeatureNotSupportedException`

#### getPool

    protected ObjectPool<C> getPool()

#### 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​(java.lang.Class<?> iface)
                         throws java.sql.SQLException

Specified by:
  `isWrapperFor` in interface `java.sql.Wrapper`
Throws:
  `java.sql.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 `javax.sql.CommonDataSource`
Specified by:
  `setLoginTimeout` in interface `javax.sql.DataSource`
Throws:
  `java.lang.UnsupportedOperationException` - As this implementation does not support this feature.

#### setLogWriter

    public void setLogWriter​(java.io.PrintWriter out)

Sets my log writer.

Specified by:
  `setLogWriter` in interface `javax.sql.CommonDataSource`
Specified by:
  `setLogWriter` in interface `javax.sql.DataSource`
See Also:
  `DataSource.setLogWriter(java.io.PrintWriter)`

#### unwrap

    public <T> T unwrap​(java.lang.Class<T> iface)
                 throws java.sql.SQLException

Specified by:
  `unwrap` in interface `java.sql.Wrapper`
Throws:
  `java.sql.SQLException`