java.sql.Wrapper
, javax.sql.CommonDataSource
, javax.sql.DataSource
BasicManagedDataSource
public class BasicDataSource
extends java.lang.Object
implements javax.sql.DataSource
Basic implementation of javax.sql.DataSource
that is
configured via JavaBeans properties. This is not the only way to
combine the commons-dbcp and commons-pool packages,
but provides a "one stop shopping" solution for basic requirements.
Users extending this class should take care to use appropriate accessors rather than accessing protected fields directly to ensure thread-safety.
Constructor | Description |
---|---|
BasicDataSource() |
Modifier and Type | Method | Description |
---|---|---|
void |
addConnectionProperty(java.lang.String name,
java.lang.String value) |
Add a custom connection property to the set that will be passed to our
JDBC driver.
|
void |
close() |
Closes and releases all idle connections that are currently stored in the connection pool
associated with this data source.
|
java.sql.Connection |
getConnection() |
Create (if necessary) and return a connection to the database.
|
java.sql.Connection |
getConnection(java.lang.String user,
java.lang.String pass) |
BasicDataSource does NOT support this method.
|
java.util.Collection |
getConnectionInitSqls() |
Returns the list of SQL statements executed when a physical connection
is first created.
|
boolean |
getDefaultAutoCommit() |
Returns the default auto-commit property.
|
java.lang.String |
getDefaultCatalog() |
Returns the default catalog.
|
boolean |
getDefaultReadOnly() |
Returns the default readOnly property.
|
int |
getDefaultTransactionIsolation() |
Returns the default transaction isolation state of returned connections.
|
java.lang.ClassLoader |
getDriverClassLoader() |
Returns the class loader specified for loading the JDBC driver.
|
java.lang.String |
getDriverClassName() |
Returns the jdbc driver class name.
|
int |
getInitialSize() |
Returns the initial size of the connection pool.
|
boolean |
getLogAbandoned() |
Flag to log stack traces for application code which abandoned
a Statement or Connection.
|
int |
getLoginTimeout() |
BasicDataSource does NOT support this method.
|
java.io.PrintWriter |
getLogWriter() |
Returns the log writer being used by this data source.
|
int |
getMaxActive() |
Returns the maximum number of active connections that can be
allocated at the same time.
|
int |
getMaxIdle() |
Returns the maximum number of connections that can remain idle in the
pool.
|
int |
getMaxOpenPreparedStatements() |
Gets the value of the
maxOpenPreparedStatements property. |
long |
getMaxWait() |
Returns the maximum number of milliseconds that the pool will wait
for a connection to be returned before throwing an exception.
|
long |
getMinEvictableIdleTimeMillis() |
Returns the
minEvictableIdleTimeMillis property. |
int |
getMinIdle() |
Returns the minimum number of idle connections in the pool
|
int |
getNumActive() |
[Read Only] The current number of active connections that have been
allocated from this data source.
|
int |
getNumIdle() |
[Read Only] The current number of idle connections that are waiting
to be allocated from this data source.
|
int |
getNumTestsPerEvictionRun() |
Returns the value of the
numTestsPerEvictionRun property. |
java.util.logging.Logger |
getParentLogger() |
|
java.lang.String |
getPassword() |
Returns the password passed to the JDBC driver to establish connections.
|
boolean |
getRemoveAbandoned() |
Flag to remove abandoned connections if they exceed the
removeAbandonedTimout.
|
int |
getRemoveAbandonedTimeout() |
Timeout in seconds before an abandoned connection can be removed.
|
boolean |
getTestOnBorrow() |
Returns the
testOnBorrow property. |
boolean |
getTestOnReturn() |
Returns the value of the
testOnReturn property. |
boolean |
getTestWhileIdle() |
Returns the value of the
testWhileIdle property. |
long |
getTimeBetweenEvictionRunsMillis() |
Returns the value of the
timeBetweenEvictionRunsMillis
property. |
java.lang.String |
getUrl() |
Returns the JDBC connection
url property. |
java.lang.String |
getUsername() |
Returns the JDBC connection
username property. |
java.lang.String |
getValidationQuery() |
Returns the validation query used to validate connections before
returning them.
|
int |
getValidationQueryTimeout() |
Returns the validation query timeout.
|
boolean |
isAccessToUnderlyingConnectionAllowed() |
Returns the value of the accessToUnderlyingConnectionAllowed property.
|
boolean |
isClosed() |
If true, this data source is closed and no more connections can be retrieved from this datasource.
|
boolean |
isPoolPreparedStatements() |
Returns true if we are pooling statements.
|
boolean |
isWrapperFor(java.lang.Class<?> iface) |
|
void |
removeConnectionProperty(java.lang.String name) |
Remove a custom connection property.
|
void |
setAccessToUnderlyingConnectionAllowed(boolean allow) |
Sets the value of the accessToUnderlyingConnectionAllowed property.
|
void |
setConnectionInitSqls(java.util.Collection connectionInitSqls) |
Sets the list of SQL statements to be executed when a physical
connection is first created.
|
void |
setConnectionProperties(java.lang.String connectionProperties) |
Sets the connection properties passed to driver.connect(...).
|
void |
setDefaultAutoCommit(boolean defaultAutoCommit) |
Sets default auto-commit state of connections returned by this
datasource.
|
void |
setDefaultCatalog(java.lang.String defaultCatalog) |
Sets the default catalog.
|
void |
setDefaultReadOnly(boolean defaultReadOnly) |
Sets defaultReadonly property.
|
void |
setDefaultTransactionIsolation(int defaultTransactionIsolation) |
Sets the default transaction isolation state for returned
connections.
|
void |
setDriverClassLoader(java.lang.ClassLoader driverClassLoader) |
Sets the class loader to be used to load the JDBC driver.
|
void |
setDriverClassName(java.lang.String driverClassName) |
Sets the jdbc driver class name.
|
void |
setInitialSize(int initialSize) |
Sets the initial size of the connection pool.
|
void |
setLogAbandoned(boolean logAbandoned) |
|
void |
setLoginTimeout(int loginTimeout) |
BasicDataSource does NOT support this method.
|
void |
setLogWriter(java.io.PrintWriter logWriter) |
Sets the log writer being used by this data source.
|
void |
setMaxActive(int maxActive) |
Sets the maximum number of active connections that can be
allocated at the same time.
|
void |
setMaxIdle(int maxIdle) |
Sets the maximum number of connections that can remain idle in the
pool.
|
void |
setMaxOpenPreparedStatements(int maxOpenStatements) |
Sets the value of the
maxOpenPreparedStatements
property. |
void |
setMaxWait(long maxWait) |
Sets the maxWait property.
|
void |
setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) |
Sets the
minEvictableIdleTimeMillis property. |
void |
setMinIdle(int minIdle) |
Sets the minimum number of idle connections in the pool.
|
void |
setNumTestsPerEvictionRun(int numTestsPerEvictionRun) |
Sets the value of the
numTestsPerEvictionRun property. |
void |
setPassword(java.lang.String password) |
Sets the
password . |
void |
setPoolPreparedStatements(boolean poolingStatements) |
Sets whether to pool statements or not.
|
void |
setRemoveAbandoned(boolean removeAbandoned) |
|
void |
setRemoveAbandonedTimeout(int removeAbandonedTimeout) |
|
void |
setTestOnBorrow(boolean testOnBorrow) |
Sets the
testOnBorrow property. |
void |
setTestOnReturn(boolean testOnReturn) |
Sets the
testOnReturn property. |
void |
setTestWhileIdle(boolean testWhileIdle) |
Sets the
testWhileIdle property. |
void |
setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) |
Sets the
timeBetweenEvictionRunsMillis property. |
void |
setUrl(java.lang.String url) |
Sets the
url . |
void |
setUsername(java.lang.String username) |
Sets the
username . |
void |
setValidationQuery(java.lang.String validationQuery) |
Sets the
validationQuery . |
void |
setValidationQueryTimeout(int timeout) |
Sets the validation query timeout, the amount of time, in seconds, that
connection validation will wait for a response from the database when
executing a validation query.
|
<T> T |
unwrap(java.lang.Class<T> iface) |
public void addConnectionProperty(java.lang.String name, java.lang.String value)
name
- Name of the custom connection propertyvalue
- Value of the custom connection propertypublic void close() throws java.sql.SQLException
Closes and releases all idle connections that are currently stored in the connection pool associated with this data source.
Connections that are checked out to clients when this method is invoked are not affected.
When client applications subsequently invoke Connection.close()
to return
these connections to the pool, the underlying JDBC connections are closed.
Attempts to acquire connections using getConnection()
after this method has been
invoked result in SQLExceptions.
This method is idempotent - i.e., closing an already closed BasicDataSource has no effect and does not generate exceptions.
java.sql.SQLException
- if an error occurs closing idle connectionspublic java.sql.Connection getConnection() throws java.sql.SQLException
getConnection
in interface javax.sql.DataSource
java.sql.SQLException
- if a database access error occurspublic java.sql.Connection getConnection(java.lang.String user, java.lang.String pass) throws java.sql.SQLException
getConnection
in interface javax.sql.DataSource
user
- Database user on whose behalf the Connection
is being madepass
- The database user's passwordjava.lang.UnsupportedOperationException
java.sql.SQLException
- if a database access error occurspublic java.util.Collection getConnectionInitSqls()
public boolean getDefaultAutoCommit()
public java.lang.String getDefaultCatalog()
public boolean getDefaultReadOnly()
public int getDefaultTransactionIsolation()
Connection.getTransactionIsolation()
public java.lang.ClassLoader getDriverClassLoader()
null
if no class loader has been explicitly specified.public java.lang.String getDriverClassName()
public int getInitialSize()
public boolean getLogAbandoned()
Flag to log stack traces for application code which abandoned a Statement or Connection.
Defaults to false.
Logging of abandoned Statements and Connections adds overhead for every Connection open or new Statement because a stack trace has to be generated.
public int getLoginTimeout() throws java.sql.SQLException
Returns the login timeout (in seconds) for connecting to the database.
Calls createDataSource()
, so has the side effect
of initializing the connection pool.
getLoginTimeout
in interface javax.sql.CommonDataSource
getLoginTimeout
in interface javax.sql.DataSource
java.sql.SQLException
- if a database access error occursjava.lang.UnsupportedOperationException
- If the DataSource implementation
does not support the login timeout feature.public java.io.PrintWriter getLogWriter() throws java.sql.SQLException
Returns the log writer being used by this data source.
Calls createDataSource()
, so has the side effect
of initializing the connection pool.
getLogWriter
in interface javax.sql.CommonDataSource
getLogWriter
in interface javax.sql.DataSource
java.sql.SQLException
- if a database access error occurspublic int getMaxActive()
Returns the maximum number of active connections that can be allocated at the same time.
A negative number means that there is no limit.
public int getMaxIdle()
Returns the maximum number of connections that can remain idle in the pool.
A negative value indicates that there is no limit
public int getMaxOpenPreparedStatements()
maxOpenPreparedStatements
property.maxOpenPreparedStatements
public long getMaxWait()
Returns the maximum number of milliseconds that the pool will wait for a connection to be returned before throwing an exception.
A value less than or equal to zero means the pool is set to wait indefinitely.
public long getMinEvictableIdleTimeMillis()
minEvictableIdleTimeMillis
property.minEvictableIdleTimeMillis
propertyminEvictableIdleTimeMillis
public int getMinIdle()
GenericObjectPool.getMinIdle()
public int getNumActive()
public int getNumIdle()
public int getNumTestsPerEvictionRun()
numTestsPerEvictionRun
property.numTestsPerEvictionRun
public java.util.logging.Logger getParentLogger() throws java.sql.SQLFeatureNotSupportedException
getParentLogger
in interface javax.sql.CommonDataSource
java.sql.SQLFeatureNotSupportedException
public java.lang.String getPassword()
public boolean getRemoveAbandoned()
Abandonded connections are identified and removed when
getConnection()
is invoked and the following conditions hold
getRemoveAbandoned()
= true getNumActive()
> getMaxActive()
- 3 getNumIdle()
< 2 public int getRemoveAbandonedTimeout()
public boolean getTestOnBorrow()
testOnBorrow
property.testOnBorrow
public boolean getTestOnReturn()
testOnReturn
property.testOnReturn
public boolean getTestWhileIdle()
testWhileIdle
property.testWhileIdle
public long getTimeBetweenEvictionRunsMillis()
timeBetweenEvictionRunsMillis
property.timeBetweenEvictionRunsMillis
public java.lang.String getUrl()
url
property.url
passed to the JDBC driver to establish
connectionspublic java.lang.String getUsername()
username
property.username
passed to the JDBC driver to establish
connectionspublic java.lang.String getValidationQuery()
validationQuery
public int getValidationQueryTimeout()
public boolean isAccessToUnderlyingConnectionAllowed()
public boolean isClosed()
public boolean isPoolPreparedStatements()
public boolean isWrapperFor(java.lang.Class<?> iface) throws java.sql.SQLException
isWrapperFor
in interface java.sql.Wrapper
java.sql.SQLException
public void removeConnectionProperty(java.lang.String name)
name
- Name of the custom connection property to removeaddConnectionProperty(String, String)
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)
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.
allow
- Access to the underlying connection is granted when true.public void setConnectionInitSqls(java.util.Collection connectionInitSqls)
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.
connectionInitSqls
- Collection of SQL statements to execute
on connection creationpublic void setConnectionProperties(java.lang.String connectionProperties)
connectionProperties
- the connection properties used to
create new connectionspublic void setDefaultAutoCommit(boolean defaultAutoCommit)
Sets default auto-commit state of connections returned by this datasource.
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.
defaultAutoCommit
- default auto-commit valuepublic void setDefaultCatalog(java.lang.String defaultCatalog)
Sets the default catalog.
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.
defaultCatalog
- the default catalogpublic void setDefaultReadOnly(boolean defaultReadOnly)
Sets defaultReadonly property.
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.
defaultReadOnly
- default read-only valuepublic void setDefaultTransactionIsolation(int defaultTransactionIsolation)
Sets the default transaction isolation state for returned connections.
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.
defaultTransactionIsolation
- the default transaction isolation
stateConnection.getTransactionIsolation()
public void setDriverClassLoader(java.lang.ClassLoader driverClassLoader)
Sets the class loader to be used to load the JDBC driver.
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.
driverClassLoader
- the class loader with which to load the JDBC
driverpublic void setDriverClassName(java.lang.String driverClassName)
Sets the jdbc driver class name.
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.
driverClassName
- the class name of the jdbc driverpublic void setInitialSize(int initialSize)
Sets the initial size of the connection pool.
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.
initialSize
- the number of connections created when the pool
is initializedpublic void setLogAbandoned(boolean logAbandoned)
logAbandoned
- new logAbandoned property valuepublic void setLoginTimeout(int loginTimeout) throws java.sql.SQLException
Set the login timeout (in seconds) for connecting to the database.
Calls createDataSource()
, so has the side effect
of initializing the connection pool.
setLoginTimeout
in interface javax.sql.CommonDataSource
setLoginTimeout
in interface javax.sql.DataSource
loginTimeout
- The new login timeout, or zero for no timeoutjava.lang.UnsupportedOperationException
- If the DataSource implementation
does not support the login timeout feature.java.sql.SQLException
- if a database access error occurspublic void setLogWriter(java.io.PrintWriter logWriter) throws java.sql.SQLException
Sets the log writer being used by this data source.
Calls createDataSource()
, so has the side effect
of initializing the connection pool.
setLogWriter
in interface javax.sql.CommonDataSource
setLogWriter
in interface javax.sql.DataSource
logWriter
- The new log writerjava.sql.SQLException
- if a database access error occurspublic void setMaxActive(int maxActive)
maxActive
- the new value for maxActivegetMaxActive()
public void setMaxIdle(int maxIdle)
maxIdle
- the new value for maxIdlegetMaxIdle()
public void setMaxOpenPreparedStatements(int maxOpenStatements)
Sets the value of the maxOpenPreparedStatements
property.
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.
maxOpenStatements
- the new maximum number of prepared statementsmaxOpenPreparedStatements
public void setMaxWait(long maxWait)
Sets the maxWait property.
Use -1 to make the pool wait indefinitely.
maxWait
- the new value for maxWaitgetMaxWait()
public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis)
minEvictableIdleTimeMillis
property.minEvictableIdleTimeMillis
- the minimum amount of time an object
may sit idle in the poolminEvictableIdleTimeMillis
public void setMinIdle(int minIdle)
minIdle
- the new value for minIdleGenericObjectPool.setMinIdle(int)
public void setNumTestsPerEvictionRun(int numTestsPerEvictionRun)
numTestsPerEvictionRun
property.numTestsPerEvictionRun
- the new numTestsPerEvictionRun
valuenumTestsPerEvictionRun
public void setPassword(java.lang.String password)
Sets the password
.
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.
password
- new value for the passwordpublic void setPoolPreparedStatements(boolean poolingStatements)
Sets whether to pool statements or not.
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.
poolingStatements
- pooling on or offpublic void setRemoveAbandoned(boolean removeAbandoned)
removeAbandoned
- new removeAbandoned property valuegetRemoveAbandoned()
public void setRemoveAbandonedTimeout(int removeAbandonedTimeout)
removeAbandonedTimeout
- new removeAbandonedTimeout valuepublic void setTestOnBorrow(boolean testOnBorrow)
testOnBorrow
property. This property determines
whether or not the pool will validate objects before they are borrowed
from the pool. For a true
value to have any effect, the
validationQuery
property must be set to a non-null string.testOnBorrow
- new value for testOnBorrow propertypublic void setTestOnReturn(boolean testOnReturn)
testOnReturn
property. This property determines
whether or not the pool will validate objects before they are returned
to the pool. For a true
value to have any effect, the
validationQuery
property must be set to a non-null string.testOnReturn
- new value for testOnReturn propertypublic void setTestWhileIdle(boolean testWhileIdle)
testWhileIdle
property. This property determines
whether or not the idle object evictor will validate connections. For a
true
value to have any effect, the
validationQuery
property must be set to a non-null string.testWhileIdle
- new value for testWhileIdle propertypublic void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis)
timeBetweenEvictionRunsMillis
property.timeBetweenEvictionRunsMillis
- the new time between evictor runstimeBetweenEvictionRunsMillis
public void setUrl(java.lang.String url)
Sets the url
.
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.
url
- the new value for the JDBC connection urlpublic void setUsername(java.lang.String username)
Sets the username
.
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.
username
- the new value for the JDBC connection usernamepublic void setValidationQuery(java.lang.String validationQuery)
Sets the validationQuery
.
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.
validationQuery
- the new value for the validation querypublic void setValidationQueryTimeout(int timeout)
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.
timeout
- new validation query timeout value in secondspublic <T> T unwrap(java.lang.Class<T> iface) throws java.sql.SQLException
unwrap
in interface java.sql.Wrapper
java.sql.SQLException
Copyright © 2001-2004 Apache Software Foundation. Documenation generated April 15 2019.