Package org.apache.tomcat.dbcp.dbcp2

## Class PoolingDriver

- java.lang.Object
- - org.apache.tomcat.dbcp.dbcp2.PoolingDriver

All Implemented Interfaces:
  `Driver`

    public class PoolingDriver
    extends Object
    implements Driver

A `Driver` implementation that obtains `Connection`s from a registered `ObjectPool`.

Since:
  2.0

### Field Summary

Fields
`protected static int` `MAJOR_VERSION`
`protected static int` `MINOR_VERSION`
`protected static HashMap<String,​ObjectPool<? extends Connection>>` `pools` The map of registered pools.
`static String` `URL_PREFIX` My URL prefix
`protected static int` `URL_PREFIX_LEN`

### Constructor Summary

Constructors
`` `PoolingDriver()` Constructs a new driver with `accessToUnderlyingConnectionAllowed` enabled.
`protected` `PoolingDriver​(boolean accessToUnderlyingConnectionAllowed)` For unit testing purposes.

### Method Summary

All Methods Instance Methods Concrete Methods
`boolean` `acceptsURL​(String url)`
`void` `closePool​(String name)` Closes a named pool.
`Connection` `connect​(String url, Properties info)`
`ObjectPool<? extends Connection>` `getConnectionPool​(String name)` Gets the connection pool for the given name.
`int` `getMajorVersion()`
`int` `getMinorVersion()`
`Logger` `getParentLogger()`
`String[]` `getPoolNames()` Gets the pool names.
`DriverPropertyInfo[]` `getPropertyInfo​(String url, Properties info)`
`void` `invalidateConnection​(Connection conn)` Invalidates the given connection.
`protected boolean` `isAccessToUnderlyingConnectionAllowed()` Returns the value of the accessToUnderlyingConnectionAllowed property.
`boolean` `jdbcCompliant()`
`void` `registerPool​(String name, ObjectPool<? extends Connection> pool)` Registers a named pool.

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

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

### Field Detail

#### pools

    protected static final HashMap<String,​ObjectPool<? extends Connection>> pools

The map of registered pools.

#### URL_PREFIX

    public static final String URL_PREFIX

My URL prefix

See Also:
  Constant Field Values

#### URL_PREFIX_LEN

    protected static final int URL_PREFIX_LEN

#### MAJOR_VERSION

    protected static final int MAJOR_VERSION

See Also:
  Constant Field Values

#### MINOR_VERSION

    protected static final int MINOR_VERSION

See Also:
  Constant Field Values

### Constructor Detail

#### PoolingDriver

    public PoolingDriver()

Constructs a new driver with `accessToUnderlyingConnectionAllowed` enabled.

#### PoolingDriver

    protected PoolingDriver​(boolean accessToUnderlyingConnectionAllowed)

For unit testing purposes.

Parameters:
  `accessToUnderlyingConnectionAllowed` - Do `DelegatingConnection`s created by this driver permit access to the delegate?

### Method Detail

#### acceptsURL

    public boolean acceptsURL​(String url)
                       throws SQLException

Specified by:
  `acceptsURL` in interface `Driver`
Throws:
  `SQLException`

#### closePool

    public void closePool​(String name)
                   throws SQLException

Closes a named pool.

Parameters:
  `name` - The pool name.
Throws:
  `SQLException` - Thrown when a problem is caught closing the pool.

#### connect

    public Connection connect​(String url,
                              Properties info)
                       throws SQLException

Specified by:
  `connect` in interface `Driver`
Throws:
  `SQLException`

#### getConnectionPool

    public ObjectPool<? extends Connection> getConnectionPool​(String name)
                                                       throws SQLException

Gets the connection pool for the given name.

Parameters:
  `name` - The pool name
Returns:
  The pool
Throws:
  `SQLException` - Thrown when the named pool is not registered.

#### getMajorVersion

    public int getMajorVersion()

Specified by:
  `getMajorVersion` in interface `Driver`

#### getMinorVersion

    public int getMinorVersion()

Specified by:
  `getMinorVersion` in interface `Driver`

#### getParentLogger

    public Logger getParentLogger()
                           throws SQLFeatureNotSupportedException

Specified by:
  `getParentLogger` in interface `Driver`
Throws:
  `SQLFeatureNotSupportedException`

#### getPoolNames

    public String[] getPoolNames()

Gets the pool names.

Returns:
  the pool names.

#### getPropertyInfo

    public DriverPropertyInfo[] getPropertyInfo​(String url,
                                                Properties info)

Specified by:
  `getPropertyInfo` in interface `Driver`

#### invalidateConnection

    public void invalidateConnection​(Connection conn)
                              throws SQLException

Invalidates the given connection.

Parameters:
  `conn` - connection to invalidate
Throws:
  `SQLException` - if the connection is not a `PoolGuardConnectionWrapper` or an error occurs invalidating the connection

#### isAccessToUnderlyingConnectionAllowed

    protected boolean isAccessToUnderlyingConnectionAllowed()

Returns the value of the accessToUnderlyingConnectionAllowed property.

Returns:
  true if access to the underlying is allowed, false otherwise.

#### jdbcCompliant

    public boolean jdbcCompliant()

Specified by:
  `jdbcCompliant` in interface `Driver`

#### registerPool

    public void registerPool​(String name,
                             ObjectPool<? extends Connection> pool)

Registers a named pool.

Parameters:
  `name` - The pool name.
  `pool` - The pool.