org.apache.tomcat.dbcp.dbcp.datasources

## Class SharedPoolDataSource

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

- All Implemented Interfaces:
    java.io.Serializable, 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 username) share a single maximum number of Connections in this datasource.

  User passwords can be changed without re-initializing the datasource. When a `getConnection(username, password)` request is processed with a password that is different from those used to create connections in the pool associated with `username`, 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.

  Author:
    John D. McNally
  See Also:
    Serialized Form

- - ### Field Summary

    - ### Fields inherited from class org.apache.tomcat.dbcp.dbcp.datasources.InstanceKeyDataSource

      `instanceKey, UNKNOWN_TRANSACTIONISOLATION`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SharedPoolDataSource()` Default no-arg constructor for Serialization

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()` Close pool being maintained by this datasource.
    `protected org.apache.tomcat.dbcp.dbcp.datasources.PooledConnectionManager` | `getConnectionManager(org.apache.tomcat.dbcp.dbcp.datasources.UserPassKey upkey)`
    `int` | `getMaxActive()` The maximum number of active connections that can be allocated from this pool at the same time, or non-positive for no limit.
    `int` | `getMaxIdle()` The maximum number of active connections that can remain idle in the pool, without extra ones being released, or negative for no limit.
    `int` | `getMaxWait()` The maximum number of milliseconds that the pool will wait (when there are no available connections) for a connection to be returned before throwing an exception, or -1 to wait indefinitely.
    `int` | `getNumActive()` Get the number of active connections in the pool.
    `int` | `getNumIdle()` Get the number of idle connections in the pool.
    `protected org.apache.tomcat.dbcp.dbcp.datasources.PooledConnectionAndInfo` | `getPooledConnectionAndInfo(java.lang.String username, java.lang.String password)`
    `javax.naming.Reference` | `getReference()` Returns a `SharedPoolDataSource` `Reference`.
    `void` | `setMaxActive(int maxActive)` The maximum number of active connections that can be allocated from this pool at the same time, or non-positive for no limit.
    `void` | `setMaxIdle(int maxIdle)` The maximum number of active connections that can remain idle in the pool, without extra ones being released, or negative for no limit.
    `void` | `setMaxWait(int maxWait)` The maximum number of milliseconds that the pool will wait (when there are no available connections) for a connection to be returned before throwing an exception, or -1 to wait indefinitely.
    `protected void` | `setupDefaults(java.sql.Connection con, java.lang.String username)`

    - ### Methods inherited from class org.apache.tomcat.dbcp.dbcp.datasources.InstanceKeyDataSource

      `assertInitializationAllowed, getConnection, getConnection, getConnectionPoolDataSource, getDataSourceName, getDefaultTransactionIsolation, getDescription, getJndiEnvironment, getLoginTimeout, getLogWriter, getMinEvictableIdleTimeMillis, getNumTestsPerEvictionRun, getParentLogger, getTestOnBorrow, getTestOnReturn, getTestWhileIdle, getTimeBetweenEvictionRunsMillis, getValidationQuery, isDefaultAutoCommit, isDefaultReadOnly, isRollbackAfterValidation, isTestOnBorrow, isTestOnReturn, isTestWhileIdle, isWrapperFor, setConnectionPoolDataSource, setDataSourceName, setDefaultAutoCommit, setDefaultReadOnly, setDefaultTransactionIsolation, setDescription, setJndiEnvironment, setLoginTimeout, setLogWriter, setMinEvictableIdleTimeMillis, setNumTestsPerEvictionRun, setRollbackAfterValidation, setTestOnBorrow, setTestOnReturn, setTestWhileIdle, setTimeBetweenEvictionRunsMillis, setValidationQuery, testCPDS, unwrap, whenExhaustedAction`

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

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

- - ### Constructor Detail

    - #### SharedPoolDataSource

          public SharedPoolDataSource()

      Default no-arg constructor for Serialization

  - ### Method Detail

    - #### close

          public void close()
                     throws java.lang.Exception

      Close pool being maintained by this datasource.
      Specified by:
        `close` in class `InstanceKeyDataSource`
      Throws:
        `java.lang.Exception`

    - #### getMaxActive

          public int getMaxActive()

      The maximum number of active connections that can be allocated from this pool at the same time, or non-positive for no limit.

    - #### setMaxActive

          public void setMaxActive(int maxActive)

      The maximum number of active connections that can be allocated from this pool at the same time, or non-positive for no limit. The default is 8.

    - #### getMaxIdle

          public int getMaxIdle()

      The maximum number of active connections that can remain idle in the pool, without extra ones being released, or negative for no limit.

    - #### setMaxIdle

          public void setMaxIdle(int maxIdle)

      The maximum number of active connections that can remain idle in the pool, without extra ones being released, or negative for no limit. The default is 8.

    - #### getMaxWait

          public int getMaxWait()

      The maximum number of milliseconds that the pool will wait (when there are no available connections) for a connection to be returned before throwing an exception, or -1 to wait indefinitely. Will fail immediately if value is 0. The default is -1.

    - #### setMaxWait

          public void setMaxWait(int maxWait)

      The maximum number of milliseconds that the pool will wait (when there are no available connections) for a connection to be returned before throwing an exception, or -1 to wait indefinitely. Will fail immediately if value is 0. The default is -1.

    - #### getNumActive

          public int getNumActive()

      Get the number of active connections in the pool.

    - #### getNumIdle

          public int getNumIdle()

      Get the number of idle connections in the pool.

    - #### getPooledConnectionAndInfo

          protected org.apache.tomcat.dbcp.dbcp.datasources.PooledConnectionAndInfo getPooledConnectionAndInfo(java.lang.String username,
                                                                                                   java.lang.String password)
                                                                                                        throws java.sql.SQLException

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

    - #### getConnectionManager

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

      Specified by:
        `getConnectionManager` in class `InstanceKeyDataSource`

    - #### getReference

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

      Returns a `SharedPoolDataSource` `Reference`.
      Specified by:
        `getReference` in interface `javax.naming.Referenceable`
      Overrides:
        `getReference` in class `InstanceKeyDataSource`
      Returns:
        The non-null Reference of this object.
      Throws:
        `javax.naming.NamingException` - If a naming exception was encountered while retrieving the reference.
      Since:
        1.2.2

    - #### setupDefaults

          protected void setupDefaults(java.sql.Connection con,
                           java.lang.String username)
                                throws java.sql.SQLException

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

Copyright © 2000-2020 Apache Software Foundation. All Rights Reserved.