Class InstanceKeyDataSource
- All Implemented Interfaces:
Serializable
,AutoCloseable
,Wrapper
,Referenceable
,CommonDataSource
,DataSource
- Direct Known Subclasses:
PerUserPoolDataSource
,SharedPoolDataSource
The base class for SharedPoolDataSource
and
PerUserPoolDataSource
. Many of the configuration properties
are shared and defined here. This class is declared public in order
to allow particular usage with commons-beanutils; do not make direct
use of it outside of commons-dbcp.
A J2EE container will normally provide some method of initializing the
DataSource
whose attributes are presented
as bean getters/setters and then deploying it via JNDI. It is then
available to an application as a source of pooled logical connections to
the database. The pool needs a source of physical connections. This
source is in the form of a ConnectionPoolDataSource
that
can be specified via the setDataSourceName(String)
used to
lookup the source via JNDI.
Although normally used within a JNDI environment, A DataSource
can be instantiated and initialized as any bean. In this case the
ConnectionPoolDataSource
will likely be instantiated in
a similar manner. This class allows the physical source of connections
to be attached directly to this pool using the
setConnectionPoolDataSource(ConnectionPoolDataSource)
method.
The dbcp package contains an adapter,
DriverAdapterCPDS
,
that can be used to allow the use of DataSource
's based on this
class with jdbc driver implementations that do not supply a
ConnectionPoolDataSource
, but still
provide a Driver
implementation.
The package documentation contains an example using Apache Tomcat and JNDI and it also contains a non-JNDI example.
- Since:
- 2.0
- Version:
- $Id: InstanceKeyDataSource.java 1658644 2015-02-10 08:59:07Z tn $
- Author:
- John D. McNally
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract void
close()
Close the connection pool being maintained by this datasource.Attempt to establish a database connection.getConnection
(String username, String password) Attempt to retrieve a database connection usinggetPooledConnectionAndInfo(String, String)
with the provided username and password.Get the value of connectionPoolDataSource.Get the name of the ConnectionPoolDataSource which backs this pool.boolean
Gets the default value forBaseObjectPoolConfig.getBlockWhenExhausted()
for each per user pool.Gets the default value forBaseObjectPoolConfig.getEvictionPolicyClassName()
for each per user pool.boolean
Gets the default value forBaseObjectPoolConfig.getLifo()
for each per user pool.int
Gets the default value forGenericKeyedObjectPoolConfig.getMaxIdlePerKey()
for each per user pool.int
Gets the default value forGenericKeyedObjectPoolConfig.getMaxTotalPerKey()
for each per user pool.long
Gets the default value forBaseObjectPoolConfig.getMaxWaitMillis()
for each per user pool.long
Gets the default value forBaseObjectPoolConfig.getMinEvictableIdleTimeMillis()
for each per user pool.int
Gets the default value forGenericKeyedObjectPoolConfig.getMinIdlePerKey()
for each per user pool.int
Gets the default value forBaseObjectPoolConfig.getNumTestsPerEvictionRun()
for each per user pool.long
Gets the default value forGenericObjectPool#getSoftMinEvictableIdleTimeMillis()
for each per user pool.boolean
Gets the default value forGenericObjectPool#getTestOnBorrow()
for each per user pool.boolean
Gets the default value forGenericObjectPool#getTestOnCreate()
for each per user pool.boolean
Gets the default value forGenericObjectPool#getTestOnReturn()
for each per user pool.boolean
Gets the default value forGenericObjectPool#getTestWhileIdle()
for each per user pool.long
Gets the default value forGenericObjectPool#getTimeBetweenEvictionRunsMillis ()
for each per user pool.int
Get the value of defaultTransactionIsolation, which defines the state of connections handed out from this pool.Get the description.getJndiEnvironment
(String key) Get the value of jndiEnvironment which is used when instantiating a jndi InitialContext.int
Get the value of loginTimeout.Get the value of logWriter.long
Returns the maximum permitted lifetime of a connection in milliseconds.The SQL query that will be used to validate connections from this pool before returning them to the caller.int
Returns the timeout in seconds before the validation query fails.Get the value of defaultAutoCommit, which defines the state of connections handed out from this pool.Get the value of defaultReadOnly, which defines the state of connections handed out from this pool.boolean
Whether a rollback will be issued after executing the SQL query that will be used to validate connections from this pool before returning them to the caller.boolean
isWrapperFor
(Class<?> iface) void
Set the backend ConnectionPoolDataSource.void
Set the name of the ConnectionPoolDataSource which backs this pool.void
Set the value of defaultAutoCommit, which defines the state of connections handed out from this pool.void
setDefaultBlockWhenExhausted
(boolean blockWhenExhausted) Sets the default value forBaseObjectPoolConfig.getBlockWhenExhausted()
for each per user pool.void
setDefaultEvictionPolicyClassName
(String evictionPolicyClassName) Sets the default value forBaseObjectPoolConfig.getEvictionPolicyClassName()
for each per user pool.void
setDefaultLifo
(boolean lifo) Sets the default value forBaseObjectPoolConfig.getLifo()
for each per user pool.void
setDefaultMaxIdle
(int maxIdle) Sets the default value forGenericKeyedObjectPoolConfig.getMaxIdlePerKey()
for each per user pool.void
setDefaultMaxTotal
(int maxTotal) Sets the default value forGenericKeyedObjectPoolConfig.getMaxTotalPerKey()
for each per user pool.void
setDefaultMaxWaitMillis
(long maxWaitMillis) Sets the default value forBaseObjectPoolConfig.getMaxWaitMillis()
for each per user pool.void
setDefaultMinEvictableIdleTimeMillis
(long minEvictableIdleTimeMillis) Sets the default value forBaseObjectPoolConfig.getMinEvictableIdleTimeMillis()
for each per user pool.void
setDefaultMinIdle
(int minIdle) Sets the default value forGenericKeyedObjectPoolConfig.getMinIdlePerKey()
for each per user pool.void
setDefaultNumTestsPerEvictionRun
(int numTestsPerEvictionRun) Sets the default value forBaseObjectPoolConfig.getNumTestsPerEvictionRun()
for each per user pool.void
Set the value of defaultReadOnly, which defines the state of connections handed out from this pool.void
setDefaultSoftMinEvictableIdleTimeMillis
(long softMinEvictableIdleTimeMillis) Sets the default value forGenericObjectPool#getSoftMinEvictableIdleTimeMillis()
for each per user pool.void
setDefaultTestOnBorrow
(boolean testOnBorrow) Sets the default value forGenericObjectPool#getTestOnBorrow()
for each per user pool.void
setDefaultTestOnCreate
(boolean testOnCreate) Sets the default value forGenericObjectPool#getTestOnCreate()
for each per user pool.void
setDefaultTestOnReturn
(boolean testOnReturn) Sets the default value forGenericObjectPool#getTestOnReturn()
for each per user pool.void
setDefaultTestWhileIdle
(boolean testWhileIdle) Sets the default value forGenericObjectPool#getTestWhileIdle()
for each per user pool.void
setDefaultTimeBetweenEvictionRunsMillis
(long timeBetweenEvictionRunsMillis) Sets the default value forGenericObjectPool#getTimeBetweenEvictionRunsMillis ()
for each per user pool.void
Set the value of defaultTransactionIsolation, which defines the state of connections handed out from this pool.void
Set the description.void
setJndiEnvironment
(String key, String value) Sets the value of the given JNDI environment property to be used when instantiating a JNDI InitialContext.void
setLoginTimeout
(int v) Set the value of loginTimeout.void
Set the value of logWriter.void
setMaxConnLifetimeMillis
(long maxConnLifetimeMillis) Sets the maximum permitted lifetime of a connection in milliseconds.void
setRollbackAfterValidation
(boolean rollbackAfterValidation) Whether a rollback will be issued after executing the SQL query that will be used to validate connections from this pool before returning them to the caller.void
setValidationQuery
(String validationQuery) The SQL query that will be used to validate connections from this pool before returning them to the caller.void
setValidationQueryTimeout
(int validationQueryTimeout) Sets the timeout in seconds before the validation query fails.<T> T
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.DataSource
createConnectionBuilder
Methods inherited from interface javax.naming.Referenceable
getReference
-
Constructor Details
-
InstanceKeyDataSource
public InstanceKeyDataSource()Default no-arg constructor for Serialization
-
-
Method Details
-
close
Close the connection pool being maintained by this datasource.- Specified by:
close
in interfaceAutoCloseable
- Throws:
Exception
-
isWrapperFor
- Specified by:
isWrapperFor
in interfaceWrapper
- Throws:
SQLException
-
unwrap
- Specified by:
unwrap
in interfaceWrapper
- Throws:
SQLException
-
getParentLogger
- Specified by:
getParentLogger
in interfaceCommonDataSource
- Throws:
SQLFeatureNotSupportedException
-
getDefaultBlockWhenExhausted
public boolean getDefaultBlockWhenExhausted()Gets the default value forBaseObjectPoolConfig.getBlockWhenExhausted()
for each per user pool. -
setDefaultBlockWhenExhausted
public void setDefaultBlockWhenExhausted(boolean blockWhenExhausted) Sets the default value forBaseObjectPoolConfig.getBlockWhenExhausted()
for each per user pool. -
getDefaultEvictionPolicyClassName
Gets the default value forBaseObjectPoolConfig.getEvictionPolicyClassName()
for each per user pool. -
setDefaultEvictionPolicyClassName
Sets the default value forBaseObjectPoolConfig.getEvictionPolicyClassName()
for each per user pool. -
getDefaultLifo
public boolean getDefaultLifo()Gets the default value forBaseObjectPoolConfig.getLifo()
for each per user pool. -
setDefaultLifo
public void setDefaultLifo(boolean lifo) Sets the default value forBaseObjectPoolConfig.getLifo()
for each per user pool. -
getDefaultMaxIdle
public int getDefaultMaxIdle()Gets the default value forGenericKeyedObjectPoolConfig.getMaxIdlePerKey()
for each per user pool. -
setDefaultMaxIdle
public void setDefaultMaxIdle(int maxIdle) Sets the default value forGenericKeyedObjectPoolConfig.getMaxIdlePerKey()
for each per user pool. -
getDefaultMaxTotal
public int getDefaultMaxTotal()Gets the default value forGenericKeyedObjectPoolConfig.getMaxTotalPerKey()
for each per user pool. -
setDefaultMaxTotal
public void setDefaultMaxTotal(int maxTotal) Sets the default value forGenericKeyedObjectPoolConfig.getMaxTotalPerKey()
for each per user pool. -
getDefaultMaxWaitMillis
public long getDefaultMaxWaitMillis()Gets the default value forBaseObjectPoolConfig.getMaxWaitMillis()
for each per user pool. -
setDefaultMaxWaitMillis
public void setDefaultMaxWaitMillis(long maxWaitMillis) Sets the default value forBaseObjectPoolConfig.getMaxWaitMillis()
for each per user pool. -
getDefaultMinEvictableIdleTimeMillis
public long getDefaultMinEvictableIdleTimeMillis()Gets the default value forBaseObjectPoolConfig.getMinEvictableIdleTimeMillis()
for each per user pool. -
setDefaultMinEvictableIdleTimeMillis
public void setDefaultMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) Sets the default value forBaseObjectPoolConfig.getMinEvictableIdleTimeMillis()
for each per user pool. -
getDefaultMinIdle
public int getDefaultMinIdle()Gets the default value forGenericKeyedObjectPoolConfig.getMinIdlePerKey()
for each per user pool. -
setDefaultMinIdle
public void setDefaultMinIdle(int minIdle) Sets the default value forGenericKeyedObjectPoolConfig.getMinIdlePerKey()
for each per user pool. -
getDefaultNumTestsPerEvictionRun
public int getDefaultNumTestsPerEvictionRun()Gets the default value forBaseObjectPoolConfig.getNumTestsPerEvictionRun()
for each per user pool. -
setDefaultNumTestsPerEvictionRun
public void setDefaultNumTestsPerEvictionRun(int numTestsPerEvictionRun) Sets the default value forBaseObjectPoolConfig.getNumTestsPerEvictionRun()
for each per user pool. -
getDefaultSoftMinEvictableIdleTimeMillis
public long getDefaultSoftMinEvictableIdleTimeMillis()Gets the default value forGenericObjectPool#getSoftMinEvictableIdleTimeMillis()
for each per user pool. -
setDefaultSoftMinEvictableIdleTimeMillis
public void setDefaultSoftMinEvictableIdleTimeMillis(long softMinEvictableIdleTimeMillis) Sets the default value forGenericObjectPool#getSoftMinEvictableIdleTimeMillis()
for each per user pool. -
getDefaultTestOnCreate
public boolean getDefaultTestOnCreate()Gets the default value forGenericObjectPool#getTestOnCreate()
for each per user pool. -
setDefaultTestOnCreate
public void setDefaultTestOnCreate(boolean testOnCreate) Sets the default value forGenericObjectPool#getTestOnCreate()
for each per user pool. -
getDefaultTestOnBorrow
public boolean getDefaultTestOnBorrow()Gets the default value forGenericObjectPool#getTestOnBorrow()
for each per user pool. -
setDefaultTestOnBorrow
public void setDefaultTestOnBorrow(boolean testOnBorrow) Sets the default value forGenericObjectPool#getTestOnBorrow()
for each per user pool. -
getDefaultTestOnReturn
public boolean getDefaultTestOnReturn()Gets the default value forGenericObjectPool#getTestOnReturn()
for each per user pool. -
setDefaultTestOnReturn
public void setDefaultTestOnReturn(boolean testOnReturn) Sets the default value forGenericObjectPool#getTestOnReturn()
for each per user pool. -
getDefaultTestWhileIdle
public boolean getDefaultTestWhileIdle()Gets the default value forGenericObjectPool#getTestWhileIdle()
for each per user pool. -
setDefaultTestWhileIdle
public void setDefaultTestWhileIdle(boolean testWhileIdle) Sets the default value forGenericObjectPool#getTestWhileIdle()
for each per user pool. -
getDefaultTimeBetweenEvictionRunsMillis
public long getDefaultTimeBetweenEvictionRunsMillis()Gets the default value forGenericObjectPool#getTimeBetweenEvictionRunsMillis ()
for each per user pool. -
setDefaultTimeBetweenEvictionRunsMillis
public void setDefaultTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) Sets the default value forGenericObjectPool#getTimeBetweenEvictionRunsMillis ()
for each per user pool. -
getConnectionPoolDataSource
Get the value of connectionPoolDataSource. This method will return null, if the backing datasource is being accessed via jndi.- Returns:
- value of connectionPoolDataSource.
-
setConnectionPoolDataSource
Set the backend ConnectionPoolDataSource. This property should not be set if using jndi to access the datasource.- Parameters:
v
- Value to assign to connectionPoolDataSource.
-
getDataSourceName
Get the name of the ConnectionPoolDataSource which backs this pool. This name is used to look up the datasource from a jndi service provider.- Returns:
- value of dataSourceName.
-
setDataSourceName
Set the name of the ConnectionPoolDataSource which backs this pool. This name is used to look up the datasource from a jndi service provider.- Parameters:
v
- Value to assign to dataSourceName.
-
isDefaultAutoCommit
Get the value of defaultAutoCommit, which defines the state of connections handed out from this pool. The value can be changed on the Connection using Connection.setAutoCommit(boolean). The default isnull
which will use the default value for the drive.- Returns:
- value of defaultAutoCommit.
-
setDefaultAutoCommit
Set the value of defaultAutoCommit, which defines the state of connections handed out from this pool. The value can be changed on the Connection using Connection.setAutoCommit(boolean). The default isnull
which will use the default value for the drive.- Parameters:
v
- Value to assign to defaultAutoCommit.
-
isDefaultReadOnly
Get the value of defaultReadOnly, which defines the state of connections handed out from this pool. The value can be changed on the Connection using Connection.setReadOnly(boolean). The default isnull
which will use the default value for the drive.- Returns:
- value of defaultReadOnly.
-
setDefaultReadOnly
Set the value of defaultReadOnly, which defines the state of connections handed out from this pool. The value can be changed on the Connection using Connection.setReadOnly(boolean). The default isnull
which will use the default value for the drive.- Parameters:
v
- Value to assign to defaultReadOnly.
-
getDefaultTransactionIsolation
public int getDefaultTransactionIsolation()Get the value of defaultTransactionIsolation, which defines the state of connections handed out from this pool. The value can be changed on the Connection using Connection.setTransactionIsolation(int). If this method returns -1, the default is JDBC driver dependent.- Returns:
- value of defaultTransactionIsolation.
-
setDefaultTransactionIsolation
public void setDefaultTransactionIsolation(int v) Set the value of defaultTransactionIsolation, which defines the state of connections handed out from this pool. The value can be changed on the Connection using Connection.setTransactionIsolation(int). The default is JDBC driver dependent.- Parameters:
v
- Value to assign to defaultTransactionIsolation
-
getDescription
Get the description. This property is defined by jdbc as for use with GUI (or other) tools that might deploy the datasource. It serves no internal purpose.- Returns:
- value of description.
-
setDescription
Set the description. This property is defined by jdbc as for use with GUI (or other) tools that might deploy the datasource. It serves no internal purpose.- Parameters:
v
- Value to assign to description.
-
getJndiEnvironment
Get the value of jndiEnvironment which is used when instantiating a jndi InitialContext. This InitialContext is used to locate the backend ConnectionPoolDataSource.- Returns:
- value of jndiEnvironment.
-
setJndiEnvironment
Sets the value of the given JNDI environment property to be used when instantiating a JNDI InitialContext. This InitialContext is used to locate the backend ConnectionPoolDataSource.- Parameters:
key
- the JNDI environment property to set.value
- the value assigned to specified JNDI environment property.
-
getLoginTimeout
public int getLoginTimeout()Get the value of loginTimeout.- Specified by:
getLoginTimeout
in interfaceCommonDataSource
- Specified by:
getLoginTimeout
in interfaceDataSource
- Returns:
- value of loginTimeout.
-
setLoginTimeout
public void setLoginTimeout(int v) Set the value of loginTimeout.- Specified by:
setLoginTimeout
in interfaceCommonDataSource
- Specified by:
setLoginTimeout
in interfaceDataSource
- Parameters:
v
- Value to assign to loginTimeout.
-
getLogWriter
Get the value of logWriter.- Specified by:
getLogWriter
in interfaceCommonDataSource
- Specified by:
getLogWriter
in interfaceDataSource
- Returns:
- value of logWriter.
-
setLogWriter
Set the value of logWriter.- Specified by:
setLogWriter
in interfaceCommonDataSource
- Specified by:
setLogWriter
in interfaceDataSource
- Parameters:
v
- Value to assign to logWriter.
-
getValidationQuery
The SQL query that will be used to validate connections from this pool before returning them to the caller. If specified, this query MUST be an SQL SELECT statement that returns at least one row. If not specified,Connection.isValid(int)
will be used to validate connections. -
setValidationQuery
The SQL query that will be used to validate connections from this pool before returning them to the caller. If specified, this query MUST be an SQL SELECT statement that returns at least one row. If not specified, connections will be validated usingConnection.isValid(int)
. -
getValidationQueryTimeout
public int getValidationQueryTimeout()Returns the timeout in seconds before the validation query fails. -
setValidationQueryTimeout
public void setValidationQueryTimeout(int validationQueryTimeout) Sets the timeout in seconds before the validation query fails.- Parameters:
validationQueryTimeout
- The new timeout in seconds
-
isRollbackAfterValidation
public boolean isRollbackAfterValidation()Whether a rollback will be issued after executing the SQL query that will be used to validate connections from this pool before returning them to the caller.- Returns:
- true if a rollback will be issued after executing the validation query
-
setRollbackAfterValidation
public void setRollbackAfterValidation(boolean rollbackAfterValidation) Whether a rollback will be issued after executing the SQL query that will be used to validate connections from this pool before returning them to the caller. Default behavior is NOT to issue a rollback. The setting will only have an effect if a validation query is set- Parameters:
rollbackAfterValidation
- new property value
-
getMaxConnLifetimeMillis
public long getMaxConnLifetimeMillis()Returns the maximum permitted lifetime of a connection in milliseconds. A value of zero or less indicates an infinite lifetime. -
setMaxConnLifetimeMillis
public void setMaxConnLifetimeMillis(long maxConnLifetimeMillis) Sets the maximum permitted lifetime of a connection in milliseconds. A value of zero or less indicates an infinite lifetime.
Note: this method currently has no effect once the pool has been initialized. The pool is initialized the first time one of the following methods is invoked:
getConnection, setLogwriter, setLoginTimeout, getLoginTimeout, getLogWriter.
-
getConnection
Attempt to establish a database connection.- Specified by:
getConnection
in interfaceDataSource
- Throws:
SQLException
-
getConnection
Attempt to retrieve a database connection usinggetPooledConnectionAndInfo(String, String)
with the provided username and password. The password on thePooledConnectionAndInfo
instance returned bygetPooledConnectionAndInfo
is compared to thepassword
parameter. If the comparison fails, a database connection using the supplied username and password is attempted. If the connection attempt fails, an SQLException is thrown, indicating that the given password did not match the password used to create the pooled connection. If the connection attempt succeeds, this means that the database password has been changed. In this case, thePooledConnectionAndInfo
instance retrieved with the old password is destroyed and thegetPooledConnectionAndInfo
is repeatedly invoked until aPooledConnectionAndInfo
instance with the new password is returned.- Specified by:
getConnection
in interfaceDataSource
- Throws:
SQLException
-