Package org.apache.tomcat.dbcp.dbcp2.datasources

## Class SharedPoolDataSource

- java.lang.Object
- - org.apache.tomcat.dbcp.dbcp2.datasources.InstanceKeyDataSource
  - - org.apache.tomcat.dbcp.dbcp2.datasources.SharedPoolDataSource

All Implemented Interfaces:
  `java.io.Serializable`, `java.lang.AutoCloseable`, `java.sql.Wrapper`, `javax.naming.Referenceable`, `javax.sql.CommonDataSource`, `javax.sql.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.tomcat.dbcp.dbcp2.datasources.InstanceKeyDataSource

`UNKNOWN_TRANSACTIONISOLATION`

### Constructor Summary

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

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `close()` Closes pool being maintained by this data source.
`protected org.apache.tomcat.dbcp.dbcp2.datasources.PooledConnectionManager` `getConnectionManager​(org.apache.tomcat.dbcp.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.tomcat.dbcp.dbcp2.datasources.PooledConnectionAndInfo` `getPooledConnectionAndInfo​(java.lang.String userName, java.lang.String userPassword)` This method is protected but can only be implemented in this package because PooledConnectionAndInfo is a package private type.
`javax.naming.Reference` `getReference()` Creates a new `Reference` to a `SharedPoolDataSource`.
`void` `setMaxTotal​(int maxTotal)` Sets `BaseGenericObjectPool.getMaxTotal()` for this pool.
`protected void` `setupDefaults​(java.sql.Connection connection, java.lang.String userName)`
`protected void` `toStringFields​(java.lang.StringBuilder builder)`

### Methods inherited from class org.apache.tomcat.dbcp.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`

### Methods inherited from interface javax.sql.CommonDataSource

`createShardingKeyBuilder`

### Methods inherited from interface javax.sql.DataSource

`createConnectionBuilder`

### Constructor Detail

#### SharedPoolDataSource

    public SharedPoolDataSource()

Default no-argument constructor for Serialization

### Method Detail

#### close

    public void close()
               throws java.sql.SQLException

Closes pool being maintained by this data source.

Specified by:
  `close` in interface `java.lang.AutoCloseable`
Specified by:
  `close` in class `InstanceKeyDataSource`
Throws:
  `java.sql.SQLException`

#### getConnectionManager

    protected org.apache.tomcat.dbcp.dbcp2.datasources.PooledConnectionManager getConnectionManager​(org.apache.tomcat.dbcp.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.tomcat.dbcp.dbcp2.datasources.PooledConnectionAndInfo getPooledConnectionAndInfo​(java.lang.String userName,
                                                                                                          java.lang.String userPassword)
                                                                                                   throws java.sql.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:
  `java.sql.SQLException` - Connection or registration failure.

#### getReference

    public javax.naming.Reference getReference()
                                        throws javax.naming.NamingException

Creates a new `Reference` to a `SharedPoolDataSource`.

Throws:
  `javax.naming.NamingException`

#### setMaxTotal

    public void setMaxTotal​(int maxTotal)

Sets `BaseGenericObjectPool.getMaxTotal()` for this pool.

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

#### setupDefaults

    protected void setupDefaults​(java.sql.Connection connection,
                                 java.lang.String userName)
                          throws java.sql.SQLException

Specified by:
  `setupDefaults` in class `InstanceKeyDataSource`
Throws:
  `java.sql.SQLException`

#### toStringFields

    protected void toStringFields​(java.lang.StringBuilder builder)

Overrides:
  `toStringFields` in class `InstanceKeyDataSource`