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:
  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.tomcat.dbcp.dbcp2.datasources.InstanceKeyDataSource

`UNKNOWN_TRANSACTIONISOLATION`

### Constructor Summary

Constructors
Constructor and Description
`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 upkey)`
`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(String userName, String userPassword)`
`Reference` `getReference()` Returns a `SharedPoolDataSource` `Reference`.
`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.tomcat.dbcp.dbcp2.datasources.InstanceKeyDataSource

`assertInitializationAllowed, getConnection, getConnection, getConnectionPoolDataSource, getDataSourceName, getDefaultBlockWhenExhausted, getDefaultEvictionPolicyClassName, getDefaultLifo, getDefaultMaxIdle, getDefaultMaxTotal, getDefaultMaxWaitMillis, getDefaultMinEvictableIdleTimeMillis, getDefaultMinIdle, getDefaultNumTestsPerEvictionRun, getDefaultSoftMinEvictableIdleTimeMillis, getDefaultTestOnBorrow, getDefaultTestOnCreate, getDefaultTestOnReturn, getDefaultTestWhileIdle, getDefaultTimeBetweenEvictionRunsMillis, getDefaultTransactionIsolation, getDescription, getInstanceKey, getJndiEnvironment, getLoginTimeout, getLogWriter, getMaxConnLifetimeMillis, getParentLogger, getValidationQuery, getValidationQueryTimeout, isDefaultAutoCommit, isDefaultReadOnly, isRollbackAfterValidation, isWrapperFor, setConnectionPoolDataSource, setDataSourceName, setDefaultAutoCommit, setDefaultBlockWhenExhausted, setDefaultEvictionPolicyClassName, setDefaultLifo, setDefaultMaxIdle, setDefaultMaxTotal, setDefaultMaxWaitMillis, setDefaultMinEvictableIdleTimeMillis, setDefaultMinIdle, setDefaultNumTestsPerEvictionRun, setDefaultReadOnly, setDefaultSoftMinEvictableIdleTimeMillis, setDefaultTestOnBorrow, setDefaultTestOnCreate, setDefaultTestOnReturn, setDefaultTestWhileIdle, setDefaultTimeBetweenEvictionRunsMillis, setDefaultTransactionIsolation, setDescription, setJndiEnvironment, setLoginTimeout, setLogWriter, setMaxConnLifetimeMillis, setRollbackAfterValidation, setValidationQuery, 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 Exception

Closes pool being maintained by this data source.

Specified by:
  `close` in interface `AutoCloseable`
Specified by:
  `close` in class `InstanceKeyDataSource`
Throws:
  `Exception`

#### getMaxTotal

    public int getMaxTotal()

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

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

#### setMaxTotal

    public void setMaxTotal(int maxTotal)

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

Parameters:
  `maxTotal` - `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(String userName,
                                                                                                          String userPassword)
                                                                                                   throws SQLException

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

#### getConnectionManager

    protected org.apache.tomcat.dbcp.dbcp2.datasources.PooledConnectionManager getConnectionManager(org.apache.tomcat.dbcp.dbcp2.datasources.UserPassKey upkey)

Specified by:
  `getConnectionManager` in class `InstanceKeyDataSource`

#### getReference

    public Reference getReference()
                           throws NamingException

Returns a `SharedPoolDataSource` `Reference`.

Throws:
  `NamingException`

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