Class DriverAdapterCPDS

  • All Implemented Interfaces:
    Serializable, Referenceable, ObjectFactory, CommonDataSource, ConnectionPoolDataSource

    public class DriverAdapterCPDS
    extends Object
    implements ConnectionPoolDataSource, Referenceable, Serializable, ObjectFactory

    An adapter for jdbc drivers that do not include an implementation of ConnectionPoolDataSource, but still include a DriverManager implementation. ConnectionPoolDataSources are not used within general applications. They are used by DataSource implementations that pool Connections, such as SharedPoolDataSource. A J2EE container will normally provide some method of initializing the ConnectionPoolDataSource whose attributes are presented as bean getters/setters and then deploying it via JNDI. It is then available as a source of physical connections to the database, when the pooling DataSource needs to create a new physical connection.

    Although normally used within a JNDI environment, the DriverAdapterCPDS can be instantiated and initialized as any bean and then attached directly to a pooling DataSource. Jdbc2PoolDataSource can use the ConnectionPoolDataSource with or without the use of JNDI.

    The DriverAdapterCPDS also provides PreparedStatement pooling which is not generally available in jbdc2 ConnectionPoolDataSource implementation, but is addressed within the jdbc3 specification. The PreparedStatement pool in DriverAdapterCPDS has been in the dbcp package for some time, but it has not undergone extensive testing in the configuration used here. It should be considered experimental and can be toggled with the poolPreparedStatements attribute.

    The package documentation contains an example using catalina and JNDI. The datasources package documentation shows how to use DriverAdapterCPDS as a source for Jdbc2PoolDataSource without the use of JNDI.

    Version:
    $Revision: 896266 $ $Date: 2010-01-05 18:20:12 -0500 (Tue, 05 Jan 2010) $
    Author:
    John D. McNally
    See Also:
    Serialized Form
    • Constructor Detail

      • DriverAdapterCPDS

        public DriverAdapterCPDS()
        Default no-arg constructor for Serialization
    • Method Detail

      • getConnectionProperties

        public Properties getConnectionProperties()
        Get the connection properties passed to the JDBC driver.
        Returns:
        the JDBC connection properties used when creating connections.
        Since:
        1.3
      • getDescription

        public String getDescription()
        Get the value of description. This property is here for use by the code which will deploy this datasource. It is not used internally.
        Returns:
        value of description, may be null.
        See Also:
        setDescription(String)
      • setDescription

        public void setDescription​(String v)
        Set the value of description. This property is here for use by the code which will deploy this datasource. It is not used internally.
        Parameters:
        v - Value to assign to description.
      • getPassword

        public String getPassword()
        Get the value of password for the default user.
        Returns:
        value of password.
      • getUrl

        public String getUrl()
        Get the value of url used to locate the database for this datasource.
        Returns:
        value of url.
      • getUser

        public String getUser()
        Get the value of default user (login or username).
        Returns:
        value of user.
      • getDriver

        public String getDriver()
        Get the driver classname.
        Returns:
        value of driver.
      • isPoolPreparedStatements

        public boolean isPoolPreparedStatements()
        Flag to toggle the pooling of PreparedStatements
        Returns:
        value of poolPreparedStatements.
      • setPoolPreparedStatements

        public void setPoolPreparedStatements​(boolean v)
        Flag to toggle the pooling of PreparedStatements
        Parameters:
        v - true to pool statements.
        Throws:
        IllegalStateException - if getPooledConnection() has been called
      • getMaxActive

        public int getMaxActive()
        The maximum number of active statements 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 statements that can be allocated from this pool at the same time, or non-positive for no limit.
        Parameters:
        maxActive - the maximum number of concurrent active statements allowed
        Throws:
        IllegalStateException - if getPooledConnection() has been called
      • getMaxIdle

        public int getMaxIdle()
        The maximum number of statements that can remain idle in the pool, without extra ones being released, or negative for no limit.
        Returns:
        the value of maxIdle
      • setMaxIdle

        public void setMaxIdle​(int maxIdle)
        The maximum number of statements that can remain idle in the pool, without extra ones being released, or negative for no limit.
        Parameters:
        maxIdle - The maximum number of statements that can remain idle
        Throws:
        IllegalStateException - if getPooledConnection() has been called
      • getTimeBetweenEvictionRunsMillis

        public int getTimeBetweenEvictionRunsMillis()
        Returns the number of milliseconds to sleep between runs of the idle object evictor thread. When non-positive, no idle object evictor thread will be run.
        Returns:
        the value of the evictor thread timer
        See Also:
        setTimeBetweenEvictionRunsMillis(int)
      • setTimeBetweenEvictionRunsMillis

        public void setTimeBetweenEvictionRunsMillis​(int timeBetweenEvictionRunsMillis)
        Sets the number of milliseconds to sleep between runs of the idle object evictor thread. When non-positive, no idle object evictor thread will be run.
        Parameters:
        timeBetweenEvictionRunsMillis -
        Throws:
        IllegalStateException - if getPooledConnection() has been called
        See Also:
        getTimeBetweenEvictionRunsMillis()
      • getNumTestsPerEvictionRun

        public int getNumTestsPerEvictionRun()
        Returns the number of statements to examine during each run of the idle object evictor thread (if any). *see #setNumTestsPerEvictionRun *see #setTimeBetweenEvictionRunsMillis
      • setNumTestsPerEvictionRun

        public void setNumTestsPerEvictionRun​(int numTestsPerEvictionRun)
        Sets the number of statements to examine during each run of the idle object evictor thread (if any).

        When a negative value is supplied, ceil({*link #numIdle})/abs({*link #getNumTestsPerEvictionRun}) tests will be run. I.e., when the value is -n, roughly one nth of the idle objects will be tested per run.

        Parameters:
        numTestsPerEvictionRun - number of statements to examine per run
        Throws:
        IllegalStateException - if getPooledConnection() has been called
        See Also:
        getNumTestsPerEvictionRun(), setTimeBetweenEvictionRunsMillis(int)
      • getMinEvictableIdleTimeMillis

        public int getMinEvictableIdleTimeMillis()
        Returns the minimum amount of time a statement may sit idle in the pool before it is eligible for eviction by the idle object evictor (if any). *see #setMinEvictableIdleTimeMillis *see #setTimeBetweenEvictionRunsMillis
      • setMinEvictableIdleTimeMillis

        public void setMinEvictableIdleTimeMillis​(int minEvictableIdleTimeMillis)
        Sets the minimum amount of time a statement may sit idle in the pool before it is eligable for eviction by the idle object evictor (if any). When non-positive, no objects will be evicted from the pool due to idle time alone.
        Parameters:
        minEvictableIdleTimeMillis - minimum time to set (in ms)
        Throws:
        IllegalStateException - if getPooledConnection() has been called
        See Also:
        getMinEvictableIdleTimeMillis(), setTimeBetweenEvictionRunsMillis(int)
      • isAccessToUnderlyingConnectionAllowed

        public boolean isAccessToUnderlyingConnectionAllowed()
        Returns the value of the accessToUnderlyingConnectionAllowed property.
        Returns:
        true if access to the underlying is allowed, false otherwise.
      • setAccessToUnderlyingConnectionAllowed

        public void setAccessToUnderlyingConnectionAllowed​(boolean allow)
        Sets the value of the accessToUnderlyingConnectionAllowed property. It controls if the PoolGuard allows access to the underlying connection. (Default: false)
        Parameters:
        allow - Access to the underlying connection is granted when true.
      • getMaxPreparedStatements

        public int getMaxPreparedStatements()
        Returns the maximun number of prepared statements.
        Returns:
        maxPrepartedStatements value
        Since:
        1.2.2
      • setMaxPreparedStatements

        public void setMaxPreparedStatements​(int maxPreparedStatements)
        Sets the maximum number of prepared statements.
        Parameters:
        maxPreparedStatements - the new maximum number of prepared statements
        Since:
        1.2.2