Package org.apache.commons.dbcp2.datasources

## Class SharedPoolDataSource

- java.lang.Object
- - org.apache.commons.dbcp2.datasources.InstanceKeyDataSource
  - - org.apache.commons.dbcp2.datasources.SharedPoolDataSource

- All Implemented Interfaces:
    `Serializable`, `AutoCloseable`, `Wrapper`, `Referenceable`, `CommonDataSource`, `DataSource`

      public class SharedPoolDataSource
      extends InstanceKeyDataSource

  A pooling `DataSource` appropriate for deployment within J2EE environment. There are many configuration options, most of which are defined in the parent class. All users (based on user name) share a single maximum number of Connections in this data source.

  User passwords can be changed without re-initializing the data source. When a `getConnection(user name, password)` request is processed with a password that is different from those used to create connections in the pool associated with `user name`, an attempt is made to create a new connection using the supplied password and if this succeeds, idle connections created using the old password are destroyed and new connections are created using the new password.

  Since:
    2.0
  See Also:
    Serialized Form

- - ### Field Summary

    - ### Fields inherited from class org.apache.commons.dbcp2.datasources.InstanceKeyDataSource

      `UNKNOWN_TRANSACTIONISOLATION`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `SharedPoolDataSource()` | Default no-argument constructor for Serialization

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `close()` | Closes pool being maintained by this data source.
    `protected org.apache.commons.dbcp2.datasources.PooledConnectionManager` | `getConnectionManager​(org.apache.commons.dbcp2.datasources.UserPassKey userPassKey)` |
    `int` | `getMaxTotal()` | Gets `BaseGenericObjectPool.getMaxTotal()` for this pool.
    `int` | `getNumActive()` | Gets the number of active connections in the pool.
    `int` | `getNumIdle()` | Gets the number of idle connections in the pool.
    `protected org.apache.commons.dbcp2.datasources.PooledConnectionAndInfo` | `getPooledConnectionAndInfo​(String userName, String userPassword)` | This method is protected but can only be implemented in this package because PooledConnectionAndInfo is a package private type.
    `Reference` | `getReference()` | Creates a new `Reference` to a `SharedPoolDataSource`.
    `void` | `setMaxTotal​(int maxTotal)` | Sets `BaseGenericObjectPool.getMaxTotal()` for this pool.
    `protected void` | `setupDefaults​(Connection connection, String userName)` |
    `protected void` | `toStringFields​(StringBuilder builder)` |

    - ### Methods inherited from class org.apache.commons.dbcp2.datasources.InstanceKeyDataSource

      `assertInitializationAllowed, getConnection, getConnection, getConnectionPoolDataSource, getDataSourceName, getDefaultBlockWhenExhausted, getDefaultDurationBetweenEvictionRuns, getDefaultEvictionPolicyClassName, getDefaultLifo, getDefaultMaxIdle, getDefaultMaxTotal, getDefaultMaxWait, getDefaultMaxWaitMillis, getDefaultMinEvictableIdleDuration, getDefaultMinEvictableIdleTimeMillis, getDefaultMinIdle, getDefaultNumTestsPerEvictionRun, getDefaultSoftMinEvictableIdleDuration, getDefaultSoftMinEvictableIdleTimeMillis, getDefaultTestOnBorrow, getDefaultTestOnCreate, getDefaultTestOnReturn, getDefaultTestWhileIdle, getDefaultTimeBetweenEvictionRunsMillis, getDefaultTransactionIsolation, getDescription, getInstanceKey, getJndiEnvironment, getLoginTimeout, getLoginTimeoutDuration, getLogWriter, getMaxConnDuration, getMaxConnLifetime, getMaxConnLifetimeMillis, getParentLogger, getValidationQuery, getValidationQueryTimeout, getValidationQueryTimeoutDuration, isDefaultAutoCommit, isDefaultReadOnly, isRollbackAfterValidation, isWrapperFor, setConnectionPoolDataSource, setDataSourceName, setDefaultAutoCommit, setDefaultBlockWhenExhausted, setDefaultDurationBetweenEvictionRuns, setDefaultEvictionPolicyClassName, setDefaultLifo, setDefaultMaxIdle, setDefaultMaxTotal, setDefaultMaxWait, setDefaultMaxWaitMillis, setDefaultMinEvictableIdle, setDefaultMinEvictableIdleTimeMillis, setDefaultMinIdle, setDefaultNumTestsPerEvictionRun, setDefaultReadOnly, setDefaultSoftMinEvictableIdle, setDefaultSoftMinEvictableIdleTimeMillis, setDefaultTestOnBorrow, setDefaultTestOnCreate, setDefaultTestOnReturn, setDefaultTestWhileIdle, setDefaultTimeBetweenEvictionRunsMillis, setDefaultTransactionIsolation, setDescription, setJndiEnvironment, setLoginTimeout, setLoginTimeout, setLogWriter, setMaxConnLifetime, setMaxConnLifetimeMillis, setRollbackAfterValidation, setValidationQuery, setValidationQueryTimeout, setValidationQueryTimeout, testCPDS, toString, unwrap`

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

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

- - ### Constructor Detail

    - #### SharedPoolDataSource

          public SharedPoolDataSource()

      Default no-argument constructor for Serialization

  - ### Method Detail

    - #### close

          public void close()
                     throws SQLException

      Closes pool being maintained by this data source.
      Specified by:
        `close` in interface `AutoCloseable`
      Specified by:
        `close` in class `InstanceKeyDataSource`
      Throws:
        `SQLException`

    - #### getConnectionManager

          protected org.apache.commons.dbcp2.datasources.PooledConnectionManager getConnectionManager​(org.apache.commons.dbcp2.datasources.UserPassKey userPassKey)

      Specified by:
        `getConnectionManager` in class `InstanceKeyDataSource`

    - #### getMaxTotal

          public int getMaxTotal()

      Gets `BaseGenericObjectPool.getMaxTotal()` for this pool.
      Returns:
        `BaseGenericObjectPool.getMaxTotal()` for this pool.

    - #### getNumActive

          public int getNumActive()

      Gets the number of active connections in the pool.
      Returns:
        The number of active connections in the pool.

    - #### getNumIdle

          public int getNumIdle()

      Gets the number of idle connections in the pool.
      Returns:
        The number of idle connections in the pool.

    - #### getPooledConnectionAndInfo

          protected org.apache.commons.dbcp2.datasources.PooledConnectionAndInfo getPooledConnectionAndInfo​(String userName,
                                                                                                            String userPassword)
                                                                                                     throws SQLException

      Description copied from class: `InstanceKeyDataSource`
      This method is protected but can only be implemented in this package because PooledConnectionAndInfo is a package private type.
      Specified by:
        `getPooledConnectionAndInfo` in class `InstanceKeyDataSource`
      Parameters:
        `userName` - The user name.
        `userPassword` - The user password.
      Returns:
        Matching PooledConnectionAndInfo.
      Throws:
        `SQLException` - Connection or registration failure.

    - #### getReference

          public Reference getReference()
                                 throws NamingException

      Creates a new `Reference` to a `SharedPoolDataSource`.
      Throws:
        `NamingException`

    - #### setMaxTotal

          public void setMaxTotal​(int maxTotal)

      Sets `BaseGenericObjectPool.getMaxTotal()` for this pool.
      Parameters:
        `maxTotal` - `BaseGenericObjectPool.getMaxTotal()` for this pool.

    - #### setupDefaults

          protected void setupDefaults​(Connection connection,
                                       String userName)
                                throws SQLException

      Specified by:
        `setupDefaults` in class `InstanceKeyDataSource`
      Throws:
        `SQLException`

    - #### toStringFields

          protected void toStringFields​(StringBuilder builder)

      Overrides:
        `toStringFields` in class `InstanceKeyDataSource`