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:
  `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
Description
`SharedPoolDataSource()`
Default no-argument constructor for Serialization

## Method Summary

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

### SharedPoolDataSource

public SharedPoolDataSource()
Default no-argument constructor for Serialization

## Method Details

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