Class DriverAdapterCPDS
- All Implemented Interfaces:
Serializable
,Referenceable
,ObjectFactory
,CommonDataSource
,ConnectionPoolDataSource
An adapter for jdbc drivers that do not include an implementation
of ConnectionPoolDataSource
, but still include a
DriverManager
implementation.
ConnectionPoolDataSource
s are not used within general
applications. They are used by DataSource
implementations
that pool Connection
s, 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.
- Since:
- 2.0
- Version:
- $Id: DriverAdapterCPDS.java 1658644 2015-02-10 08:59:07Z tn $
- Author:
- John D. McNally
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionGet the connection properties passed to the JDBC driver.Get the value of description.Get the driver classname.int
Gets the maximum time in seconds that this data source can wait while attempting to connect to a database.Get the log writer for this data source.int
The maximum number of statements that can remain idle in the pool, without extra ones being released, or negative for no limit.int
Returns the maximum number of prepared statements.int
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).int
Returns the number of statements to examine during each run of the idle object evictor thread (if any).getObjectInstance
(Object refObj, Name name, Context context, Hashtable<?, ?> env) implements ObjectFactory to create an instance of this classGet the value of password for the default user.Attempt to establish a database connection using the default user and password.getPooledConnection
(String username, String pass) Attempt to establish a database connection.Referenceable
implementation.long
Returns the number of milliseconds to sleep between runs of the idle object evictor thread.getUrl()
Get the value of url used to locate the database for this datasource.getUser()
Get the value of default user (login or username).boolean
Returns the value of the accessToUnderlyingConnectionAllowed property.boolean
Flag to toggle the pooling ofPreparedStatement
svoid
setAccessToUnderlyingConnectionAllowed
(boolean allow) Sets the value of the accessToUnderlyingConnectionAllowed property.void
Set the connection properties passed to the JDBC driver.void
Set the value of description.void
Set the driver classname.void
setLoginTimeout
(int seconds) Sets the maximum time in seconds that this data source will wait while attempting to connect to a database.void
setLogWriter
(PrintWriter out) Set the log writer for this data source.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.void
setMaxPreparedStatements
(int maxPreparedStatements) Sets the maximum number of prepared statements.void
setMinEvictableIdleTimeMillis
(int minEvictableIdleTimeMillis) Sets 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).void
setNumTestsPerEvictionRun
(int numTestsPerEvictionRun) Sets the number of statements to examine during each run of the idle object evictor thread (if any).void
Set the value of password for the default user.void
setPoolPreparedStatements
(boolean v) Flag to toggle the pooling ofPreparedStatement
svoid
setTimeBetweenEvictionRunsMillis
(long timeBetweenEvictionRunsMillis) Sets the number of milliseconds to sleep between runs of the idle object evictor thread.void
Set the value of url used to locate the database for this datasource.void
Set the value of default user (login or username).Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface javax.sql.CommonDataSource
createShardingKeyBuilder
Methods inherited from interface javax.sql.ConnectionPoolDataSource
createPooledConnectionBuilder
-
Constructor Details
-
DriverAdapterCPDS
public DriverAdapterCPDS()Default no-arg constructor for Serialization
-
-
Method Details
-
getPooledConnection
Attempt to establish a database connection using the default user and password.- Specified by:
getPooledConnection
in interfaceConnectionPoolDataSource
- Throws:
SQLException
-
getPooledConnection
Attempt to establish a database connection.- Specified by:
getPooledConnection
in interfaceConnectionPoolDataSource
- Parameters:
username
- name to be used for the connectionpass
- password to be used fur the connection- Throws:
SQLException
-
getParentLogger
- Specified by:
getParentLogger
in interfaceCommonDataSource
- Throws:
SQLFeatureNotSupportedException
-
getReference
Referenceable
implementation.- Specified by:
getReference
in interfaceReferenceable
- Throws:
NamingException
-
getObjectInstance
public Object getObjectInstance(Object refObj, Name name, Context context, Hashtable<?, ?> env) throws Exceptionimplements ObjectFactory to create an instance of this class- Specified by:
getObjectInstance
in interfaceObjectFactory
- Throws:
Exception
-
getConnectionProperties
Get the connection properties passed to the JDBC driver.- Returns:
- the JDBC connection properties used when creating connections.
-
setConnectionProperties
Set the connection properties passed to the JDBC driver.
If
props
contains "user" and/or "password" properties, the corresponding instance properties are set. If these properties are not present, they are filled in usinggetUser()
,getPassword()
whengetPooledConnection()
is called, or using the actual parameters to the method call whengetPooledConnection(String, String)
is called. Calls tosetUser(String)
orsetPassword(String)
overwrite the values of these properties ifconnectionProperties
is not null.- Parameters:
props
- Connection properties to use when creating new connections.- Throws:
IllegalStateException
- ifgetPooledConnection()
has been called
-
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
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
Get the value of password for the default user.- Returns:
- value of password.
-
setPassword
Set the value of password for the default user.- Parameters:
v
- Value to assign to password.- Throws:
IllegalStateException
- ifgetPooledConnection()
has been called
-
getUrl
Get the value of url used to locate the database for this datasource.- Returns:
- value of url.
-
setUrl
Set the value of url used to locate the database for this datasource.- Parameters:
v
- Value to assign to url.- Throws:
IllegalStateException
- ifgetPooledConnection()
has been called
-
getUser
Get the value of default user (login or username).- Returns:
- value of user.
-
setUser
Set the value of default user (login or username).- Parameters:
v
- Value to assign to user.- Throws:
IllegalStateException
- ifgetPooledConnection()
has been called
-
getDriver
Get the driver classname.- Returns:
- value of driver.
-
setDriver
Set the driver classname. Setting the driver classname cause the driver to be registered with the DriverManager.- Parameters:
v
- Value to assign to driver.- Throws:
IllegalStateException
- ifgetPooledConnection()
has been calledClassNotFoundException
-
getLoginTimeout
public int getLoginTimeout()Gets the maximum time in seconds that this data source can wait while attempting to connect to a database. NOT USED.- Specified by:
getLoginTimeout
in interfaceCommonDataSource
- Specified by:
getLoginTimeout
in interfaceConnectionPoolDataSource
-
getLogWriter
Get the log writer for this data source. NOT USED.- Specified by:
getLogWriter
in interfaceCommonDataSource
- Specified by:
getLogWriter
in interfaceConnectionPoolDataSource
-
setLoginTimeout
public void setLoginTimeout(int seconds) Sets the maximum time in seconds that this data source will wait while attempting to connect to a database. NOT USED.- Specified by:
setLoginTimeout
in interfaceCommonDataSource
- Specified by:
setLoginTimeout
in interfaceConnectionPoolDataSource
-
setLogWriter
Set the log writer for this data source. NOT USED.- Specified by:
setLogWriter
in interfaceCommonDataSource
- Specified by:
setLogWriter
in interfaceConnectionPoolDataSource
-
isPoolPreparedStatements
public boolean isPoolPreparedStatements()Flag to toggle the pooling ofPreparedStatement
s- Returns:
- value of poolPreparedStatements.
-
setPoolPreparedStatements
public void setPoolPreparedStatements(boolean v) Flag to toggle the pooling ofPreparedStatement
s- Parameters:
v
- true to pool statements.- Throws:
IllegalStateException
- ifgetPooledConnection()
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
- ifgetPooledConnection()
has been called
-
getTimeBetweenEvictionRunsMillis
public long 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
public void setTimeBetweenEvictionRunsMillis(long 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
- ifgetPooledConnection()
has been called- See Also:
-
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
- ifgetPooledConnection()
has been called- See Also:
-
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 eligible 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
- ifgetPooledConnection()
has been called- See Also:
-
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 maximum number of prepared statements.- Returns:
- maxPrepartedStatements value
-
setMaxPreparedStatements
public void setMaxPreparedStatements(int maxPreparedStatements) Sets the maximum number of prepared statements.- Parameters:
maxPreparedStatements
- the new maximum number of prepared statements
-