Class 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.

    Version:
    $Revision: 907288 $ $Date: 2010-02-06 14:42:58 -0500 (Sat, 06 Feb 2010) $
    Author:
    John D. McNally
    See Also:
    Serialized Form
    • 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.commons.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.commons.dbcp.datasources.PooledConnectionManager getConnectionManager​(org.apache.commons.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
      • getParentLogger

        public java.util.logging.Logger getParentLogger()
                                                 throws java.sql.SQLFeatureNotSupportedException
        Throws:
        java.sql.SQLFeatureNotSupportedException