# 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
  Modifier and Type
  Field
  Description
  `protected static final int`
  `MAJOR_VERSION`
  Major version number.
  `protected static final int`
  `MINOR_VERSION`
  Minor version number.
  `protected static final HashMap<String,ObjectPool<? extends Connection>>`
  `pools`
  The map of registered pools.
  `static final String`
  `URL_PREFIX`
  The Apache Commons connection string prefix "jdbc:apache:commons:dbcp:".
  `protected static final int`
  `URL_PREFIX_LEN`
  The String length of `URL_PREFIX`.

- ## Constructor Summary

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

- ## Method Summary

  Modifier and Type
  Method
  Description
  `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 Details

  - ### pools

    protected static final HashMap<String,ObjectPool<? extends Connection>> pools
    The map of registered pools.

  - ### URL_PREFIX

    public static final String URL_PREFIX
    The Apache Commons connection string prefix "jdbc:apache:commons:dbcp:".
    See Also:
      - Constant Field Values

  - ### URL_PREFIX_LEN

    protected static final int URL_PREFIX_LEN
    The String length of `URL_PREFIX`.

  - ### MAJOR_VERSION

    protected static final int MAJOR_VERSION
    Major version number.
    See Also:
      - Constant Field Values

  - ### MINOR_VERSION

    protected static final int MINOR_VERSION
    Minor version number.
    See Also:
      - Constant Field Values

- ## Constructor Details

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

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