public class BasicDataSource extends Object implements DataSource, BasicDataSourceMXBean, MBeanRegistration, AutoCloseable
Basic implementation of javax.sql.DataSource that is configured via JavaBeans properties. This is not
the only way to combine the commons-dbcp2 and commons-pool2 packages, but provides a "one stop
shopping" solution for basic requirements.
| Constructor and Description |
|---|
BasicDataSource() |
| Modifier and Type | Method and Description |
|---|---|
void |
addConnectionProperty(String name,
String value)
Adds 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.
|
protected ConnectionFactory |
createConnectionFactory()
Creates a JDBC connection factory for this datasource.
|
protected void |
createConnectionPool(PoolableConnectionFactory factory)
Creates a connection pool for this datasource.
|
protected DataSource |
createDataSource()
Creates (if necessary) and return the internal data source we are using to manage our connections.
|
protected DataSource |
createDataSourceInstance()
Creates the actual data source instance.
|
protected GenericObjectPool<PoolableConnection> |
createObjectPool(PoolableConnectionFactory factory,
GenericObjectPoolConfig<PoolableConnection> poolConfig,
AbandonedConfig abandonedConfig)
Creates an object pool used to provide pooling support for
JDBC connections. |
protected PoolableConnectionFactory |
createPoolableConnectionFactory(ConnectionFactory driverConnectionFactory)
Creates the PoolableConnectionFactory and attaches it to the connection pool.
|
void |
evict()
Manually evicts idle connections
|
PrintWriter |
getAbandonedLogWriter()
Gets the print writer used by this configuration to log information on abandoned objects.
|
boolean |
getAbandonedUsageTracking()
If the connection pool implements
UsageTracking, should the
connection pool record a stack trace every time a method is called on a pooled connection and retain the most
recent stack trace to aid debugging of abandoned connections? |
boolean |
getAutoCommitOnReturn()
Returns the value of the flag that controls whether or not connections being returned to the pool will be checked
and configured with
Connection.setAutoCommit(true) if the auto commit
setting is false when the connection is returned. |
boolean |
getCacheState()
Returns the state caching flag.
|
Connection |
getConnection()
Creates (if necessary) and return a connection to the database.
|
Connection |
getConnection(String user,
String pass)
BasicDataSource does NOT support this method.
|
String |
getConnectionFactoryClassName()
Returns the ConnectionFactoryClassName that has been configured for use by this pool.
|
List<String> |
getConnectionInitSqls()
Returns the list of SQL statements executed when a physical connection is first created.
|
String[] |
getConnectionInitSqlsAsArray()
Provides the same data as
getConnectionInitSqls() but in an array so it is accessible via JMX. |
protected GenericObjectPool<PoolableConnection> |
getConnectionPool() |
Boolean |
getDefaultAutoCommit()
Returns the default auto-commit property.
|
String |
getDefaultCatalog()
Returns the default catalog.
|
Integer |
getDefaultQueryTimeout()
Gets the default query timeout that will be used for
Statements created from this
connection. |
Boolean |
getDefaultReadOnly()
Returns the default readOnly property.
|
String |
getDefaultSchema()
Returns the default schema.
|
int |
getDefaultTransactionIsolation()
Returns the default transaction isolation state of returned connections.
|
Set<String> |
getDisconnectionSqlCodes()
Returns the set of SQL_STATE codes considered to signal fatal conditions.
|
String[] |
getDisconnectionSqlCodesAsArray()
Provides the same data as
getDisconnectionSqlCodes() but in an array so it is accessible via JMX. |
Driver |
getDriver()
Returns the JDBC Driver that has been configured for use by this pool.
|
ClassLoader |
getDriverClassLoader()
Returns the class loader specified for loading the JDBC driver.
|
String |
getDriverClassName()
Returns the JDBC driver class name.
|
boolean |
getEnableAutoCommitOnReturn()
Deprecated.
|
String |
getEvictionPolicyClassName()
Gets the EvictionPolicy implementation in use with this connection pool.
|
boolean |
getFastFailValidation()
True means that validation will fail immediately for connections that have previously thrown SQLExceptions with
SQL_STATE indicating fatal disconnection errors.
|
int |
getInitialSize()
Returns the initial size of the connection pool.
|
String |
getJmxName()
Returns the JMX name that has been requested for this DataSource.
|
boolean |
getLifo()
Returns the LIFO property.
|
boolean |
getLogAbandoned()
Flag to log stack traces for application code which abandoned a Statement or Connection.
|
boolean |
getLogExpiredConnections()
When
getMaxConnLifetimeMillis() is set to limit connection lifetime, this property determines whether or
not log messages are generated when the pool closes connections due to maximum lifetime exceeded. |
int |
getLoginTimeout()
BasicDataSource does NOT support this method.
|
PrintWriter |
getLogWriter()
Returns the log writer being used by this data source.
|
long |
getMaxConnLifetimeMillis()
Returns the maximum permitted lifetime of a connection in milliseconds.
|
int |
getMaxIdle()
Returns the maximum number of connections that can remain idle in the pool.
|
int |
getMaxOpenPreparedStatements()
Gets the value of the
maxOpenPreparedStatements property. |
int |
getMaxTotal()
Returns the maximum number of active connections that can be allocated at the same time.
|
long |
getMaxWaitMillis()
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. |
Logger |
getParentLogger() |
String |
getPassword()
Returns the password passed to the JDBC driver to establish connections.
|
protected ObjectName |
getRegisteredJmxName() |
boolean |
getRemoveAbandonedOnBorrow()
Flag to remove abandoned connections if they exceed the removeAbandonedTimeout when borrowObject is invoked.
|
boolean |
getRemoveAbandonedOnMaintenance()
Flag to remove abandoned connections if they exceed the removeAbandonedTimeout during pool maintenance.
|
int |
getRemoveAbandonedTimeout()
Timeout in seconds before an abandoned connection can be removed.
|
boolean |
getRollbackOnReturn()
Gets the current value of the flag that controls whether a connection will be rolled back when it is returned to
the pool if auto commit is not enabled and the connection is not read only.
|
long |
getSoftMinEvictableIdleTimeMillis()
Returns the minimum amount of time a connection may sit idle in the pool before it is eligible for eviction by
the idle object evictor, with the extra condition that at least "minIdle" connections remain in the pool.
|
boolean |
getTestOnBorrow()
Returns the
testOnBorrow property. |
boolean |
getTestOnCreate()
Returns the
testOnCreate 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. |
String |
getUrl()
Returns the JDBC connection
url property. |
String |
getUsername()
Returns the JDBC connection
userName property. |
String |
getValidationQuery()
Returns the validation query used to validate connections before returning them.
|
int |
getValidationQueryTimeout()
Returns the validation query timeout.
|
void |
invalidateConnection(Connection connection)
Manually invalidates a connection, effectively requesting the pool to try to close it, remove it from the pool
and reclaim pool capacity.
|
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(Class<?> iface) |
protected void |
log(String message) |
protected void |
log(String message,
Throwable throwable)
Logs the given throwable.
|
void |
postDeregister() |
void |
postRegister(Boolean registrationDone) |
void |
preDeregister() |
ObjectName |
preRegister(MBeanServer server,
ObjectName objectName) |
void |
removeConnectionProperty(String name)
Removes a custom connection property.
|
void |
setAbandonedLogWriter(PrintWriter logWriter)
Sets the print writer to be used by this configuration to log information on abandoned objects.
|
void |
setAbandonedUsageTracking(boolean usageTracking)
If the connection pool implements
UsageTracking, configure whether
the connection pool should record a stack trace every time a method is called on a pooled connection and retain
the most recent stack trace to aid debugging of abandoned connections. |
void |
setAccessToUnderlyingConnectionAllowed(boolean allow)
Sets the value of the accessToUnderlyingConnectionAllowed property.
|
void |
setAutoCommitOnReturn(boolean autoCommitOnReturn)
Sets the value of the flag that controls whether or not connections being returned to the pool will be checked
and configured with
Connection.setAutoCommit(true) if the auto commit
setting is false when the connection is returned. |
void |
setCacheState(boolean cacheState)
Sets the state caching flag.
|
void |
setConnectionFactoryClassName(String connectionFactoryClassName)
Sets the ConnectionFactory class name.
|
void |
setConnectionInitSqls(Collection<String> connectionInitSqls)
Sets the list of SQL statements to be executed when a physical connection is first created.
|
void |
setConnectionProperties(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(String defaultCatalog)
Sets the default catalog.
|
void |
setDefaultQueryTimeout(Integer defaultQueryTimeoutSeconds)
Sets the default query timeout that will be used for
Statements created from this
connection. |
void |
setDefaultReadOnly(Boolean defaultReadOnly)
Sets defaultReadonly property.
|
void |
setDefaultSchema(String defaultSchema)
Sets the default schema.
|
void |
setDefaultTransactionIsolation(int defaultTransactionIsolation)
Sets the default transaction isolation state for returned connections.
|
void |
setDisconnectionSqlCodes(Collection<String> disconnectionSqlCodes)
Sets the SQL_STATE codes considered to signal fatal conditions.
|
void |
setDriver(Driver driver)
Sets the JDBC Driver instance to use for this pool.
|
void |
setDriverClassLoader(ClassLoader driverClassLoader)
Sets the class loader to be used to load the JDBC driver.
|
void |
setDriverClassName(String driverClassName)
Sets the JDBC driver class name.
|
void |
setEnableAutoCommitOnReturn(boolean autoCommitOnReturn)
Deprecated.
|
void |
setEvictionPolicyClassName(String evictionPolicyClassName)
Sets the EvictionPolicy implementation to use with this connection pool.
|
void |
setFastFailValidation(boolean fastFailValidation) |
void |
setInitialSize(int initialSize)
Sets the initial size of the connection pool.
|
void |
setJmxName(String jmxName)
Sets the JMX name that has been requested for this DataSource.
|
void |
setLifo(boolean lifo)
Sets the LIFO property.
|
void |
setLogAbandoned(boolean logAbandoned) |
void |
setLogExpiredConnections(boolean logExpiredConnections)
When
getMaxConnLifetimeMillis() is set to limit connection lifetime, this property determines whether or
not log messages are generated when the pool closes connections due to maximum lifetime exceeded. |
void |
setLoginTimeout(int loginTimeout)
BasicDataSource does NOT support this method.
|
void |
setLogWriter(PrintWriter logWriter)
Sets the log writer being used by this data source.
|
void |
setMaxConnLifetimeMillis(long maxConnLifetimeMillis)
Sets the maximum permitted lifetime of a connection in milliseconds.
|
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 |
setMaxTotal(int maxTotal)
Sets the maximum total number of idle and borrows connections that can be active at the same time.
|
void |
setMaxWaitMillis(long maxWaitMillis)
Sets the MaxWaitMillis 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(String password)
Sets the
password. |
void |
setPoolPreparedStatements(boolean poolingStatements)
Sets whether to pool statements or not.
|
void |
setRemoveAbandonedOnBorrow(boolean removeAbandonedOnBorrow) |
void |
setRemoveAbandonedOnMaintenance(boolean removeAbandonedOnMaintenance) |
void |
setRemoveAbandonedTimeout(int removeAbandonedTimeout)
Sets the timeout in seconds before an abandoned connection can be removed.
|
void |
setRollbackOnReturn(boolean rollbackOnReturn)
Sets the flag that controls if a connection will be rolled back when it is returned to the pool if auto commit is
not enabled and the connection is not read only.
|
void |
setSoftMinEvictableIdleTimeMillis(long softMinEvictableIdleTimeMillis)
Sets the minimum amount of time a connection may sit idle in the pool before it is eligible for eviction by the
idle object evictor, with the extra condition that at least "minIdle" connections remain in the pool.
|
void |
setTestOnBorrow(boolean testOnBorrow)
Sets the
testOnBorrow property. |
void |
setTestOnCreate(boolean testOnCreate)
Sets the
testOnCreate 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(String url)
Sets the
url. |
void |
setUsername(String userName)
Sets the
userName. |
void |
setValidationQuery(String validationQuery)
Sets the
validationQuery. |
void |
setValidationQueryTimeout(int validationQueryTimeoutSeconds)
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.
|
protected void |
startPoolMaintenance()
Starts the connection pool maintenance task, if configured.
|
<T> T |
unwrap(Class<T> iface) |
protected static void |
validateConnectionFactory(PoolableConnectionFactory connectionFactory) |
protected static void validateConnectionFactory(PoolableConnectionFactory connectionFactory) throws Exception
Exceptionpublic void addConnectionProperty(String name, String value)
name - Name of the custom connection propertyvalue - Value of the custom connection propertypublic void close()
throws 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.
close in interface AutoCloseableSQLException - if an error occurs closing idle connectionsprotected ConnectionFactory createConnectionFactory() throws SQLException
setDriver(Driver) use itdriverClassName is specified that class is loaded using the
ClassLoader of this class or, if driverClassLoader is set, driverClassName is loaded
with the specified ClassLoader.driverClassName is specified and the previous attempt fails, the class is loaded using the
context class loader of the current thread.DriverManager using the specified url.
This method exists so subclasses can replace the implementation class.
SQLException - If the connection factort cannot be createdprotected void createConnectionPool(PoolableConnectionFactory factory)
This implementation configures all pool properties other than timeBetweenEvictionRunsMillis. Setting that
property is deferred to startPoolMaintenance(), since setting timeBetweenEvictionRunsMillis to a
positive value causes GenericObjectPool's eviction timer to be started.
factory - The factory to use to create new connections for this pool.protected DataSource createDataSource() throws SQLException
Creates (if necessary) and return the internal data source we are using to manage our connections.
SQLException - if the object pool cannot be created.protected DataSource createDataSourceInstance() throws SQLException
SQLException - if unable to create a datasource instanceprotected GenericObjectPool<PoolableConnection> createObjectPool(PoolableConnectionFactory factory, GenericObjectPoolConfig<PoolableConnection> poolConfig, AbandonedConfig abandonedConfig)
JDBC connections.factory - the object factorypoolConfig - the object pool configurationabandonedConfig - the abandoned objects configurationprotected PoolableConnectionFactory createPoolableConnectionFactory(ConnectionFactory driverConnectionFactory) throws SQLException
driverConnectionFactory - JDBC connection factorySQLException - if an error occurs creating the PoolableConnectionFactorypublic void evict()
throws Exception
Exception - when there is a problem evicting idle objects.public PrintWriter getAbandonedLogWriter()
public boolean getAbandonedUsageTracking()
UsageTracking, should the
connection pool record a stack trace every time a method is called on a pooled connection and retain the most
recent stack trace to aid debugging of abandoned connections?getAbandonedUsageTracking in interface BasicDataSourceMXBeantrue if usage tracking is enabledpublic boolean getAutoCommitOnReturn()
Connection.setAutoCommit(true) if the auto commit
setting is false when the connection is returned. It is true by default.public boolean getCacheState()
getCacheState in interface BasicDataSourceMXBeanpublic Connection getConnection() throws SQLException
getConnection in interface DataSourceSQLException - if a database access error occurspublic Connection getConnection(String user, String pass) throws SQLException
getConnection in interface DataSourceuser - Database user on whose behalf the Connection is being madepass - The database user's passwordUnsupportedOperationException - always thrown.SQLException - if a database access error occurspublic String getConnectionFactoryClassName()
Note: This getter only returns the last value set by a call to setConnectionFactoryClassName(String).
public List<String> getConnectionInitSqls()
public String[] getConnectionInitSqlsAsArray()
getConnectionInitSqls() but in an array so it is accessible via JMX.getConnectionInitSqlsAsArray in interface BasicDataSourceMXBeangetConnectionInitSqlsAsArray()protected GenericObjectPool<PoolableConnection> getConnectionPool()
public Boolean getDefaultAutoCommit()
getDefaultAutoCommit in interface BasicDataSourceMXBeanpublic String getDefaultCatalog()
getDefaultCatalog in interface BasicDataSourceMXBeanpublic Integer getDefaultQueryTimeout()
Statements created from this
connection. null means that the driver default will be used.public Boolean getDefaultReadOnly()
getDefaultReadOnly in interface BasicDataSourceMXBeanpublic String getDefaultSchema()
getDefaultSchema in interface BasicDataSourceMXBeanpublic int getDefaultTransactionIsolation()
getDefaultTransactionIsolation in interface BasicDataSourceMXBeanConnection.getTransactionIsolation()public Set<String> getDisconnectionSqlCodes()
setDisconnectionSqlCodes(Collection)public String[] getDisconnectionSqlCodesAsArray()
getDisconnectionSqlCodes() but in an array so it is accessible via JMX.getDisconnectionSqlCodesAsArray in interface BasicDataSourceMXBeangetDisconnectionSqlCodesAsArray()public Driver getDriver()
Note: This getter only returns the last value set by a call to setDriver(Driver). It does not return any
driver instance that may have been created from the value set via setDriverClassName(String).
public ClassLoader getDriverClassLoader()
null if no class loader has
been explicitly specified.
Note: This getter only returns the last value set by a call to setDriverClassLoader(ClassLoader). It
does not return the class loader of any driver that may have been set via setDriver(Driver).
public String getDriverClassName()
Note: This getter only returns the last value set by a call to setDriverClassName(String). It does not
return the class name of any driver that may have been set via setDriver(Driver).
getDriverClassName in interface BasicDataSourceMXBean@Deprecated public boolean getEnableAutoCommitOnReturn()
getAutoCommitOnReturn().Connection.setAutoCommit(true) if the auto commit
setting is false when the connection is returned. It is true by default.public String getEvictionPolicyClassName()
public boolean getFastFailValidation()
getFastFailValidation in interface BasicDataSourceMXBeansetDisconnectionSqlCodes(Collection)public int getInitialSize()
getInitialSize in interface BasicDataSourceMXBeanpublic String getJmxName()
public boolean getLifo()
getLifo in interface BasicDataSourceMXBeanpublic 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.
getLogAbandoned in interface BasicDataSourceMXBeangetLogAbandoned()public boolean getLogExpiredConnections()
getMaxConnLifetimeMillis() is set to limit connection lifetime, this property determines whether or
not log messages are generated when the pool closes connections due to maximum lifetime exceeded.getLogExpiredConnections in interface BasicDataSourceMXBeangetLogExpiredConnections()public int getLoginTimeout()
throws 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 CommonDataSourceSQLException - if a database access error occursUnsupportedOperationException - If the DataSource implementation does not support the login timeout
feature.public PrintWriter getLogWriter() throws 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 CommonDataSourceSQLException - if a database access error occurspublic long getMaxConnLifetimeMillis()
getMaxConnLifetimeMillis in interface BasicDataSourceMXBeangetMaxConnLifetimeMillis()public int getMaxIdle()
Returns the maximum number of connections that can remain idle in the pool. Excess idle connections are destroyed on return to the pool.
A negative value indicates that there is no limit
getMaxIdle in interface BasicDataSourceMXBeanpublic int getMaxOpenPreparedStatements()
maxOpenPreparedStatements property.getMaxOpenPreparedStatements in interface BasicDataSourceMXBeanpublic int getMaxTotal()
Returns the maximum number of active connections that can be allocated at the same time.
A negative number means that there is no limit.
getMaxTotal in interface BasicDataSourceMXBeanpublic long getMaxWaitMillis()
getMaxWaitMillis in interface BasicDataSourceMXBeanpublic long getMinEvictableIdleTimeMillis()
minEvictableIdleTimeMillis property.getMinEvictableIdleTimeMillis in interface BasicDataSourceMXBeanminEvictableIdleTimeMillis propertyminEvictableIdleTimeMillispublic int getMinIdle()
timeBetweenEvictionRunsMillis has a positive value.getMinIdle in interface BasicDataSourceMXBeanGenericObjectPool.getMinIdle()public int getNumActive()
getNumActive in interface BasicDataSourceMXBeanpublic int getNumIdle()
getNumIdle in interface BasicDataSourceMXBeanpublic int getNumTestsPerEvictionRun()
numTestsPerEvictionRun property.getNumTestsPerEvictionRun in interface BasicDataSourceMXBeannumTestsPerEvictionRunpublic Logger getParentLogger() throws SQLFeatureNotSupportedException
getParentLogger in interface CommonDataSourceSQLFeatureNotSupportedExceptionpublic String getPassword()
getPassword in interface BasicDataSourceMXBeanprotected ObjectName getRegisteredJmxName()
public boolean getRemoveAbandonedOnBorrow()
Flag to remove abandoned connections if they exceed the removeAbandonedTimeout when borrowObject is invoked.
The default value is false.
If set to true a connection is considered abandoned and eligible for removal if it has not been used for more
than removeAbandonedTimeout seconds.
Abandoned connections are identified and removed when getConnection() is invoked and all of the
following conditions hold:
getRemoveAbandonedOnBorrow in interface BasicDataSourceMXBeangetRemoveAbandonedOnBorrow()getRemoveAbandonedTimeout()public boolean getRemoveAbandonedOnMaintenance()
Flag to remove abandoned connections if they exceed the removeAbandonedTimeout during pool maintenance.
The default value is false.
If set to true a connection is considered abandoned and eligible for removal if it has not been used for more
than removeAbandonedTimeout seconds.
getRemoveAbandonedOnMaintenance in interface BasicDataSourceMXBeangetRemoveAbandonedOnMaintenance()getRemoveAbandonedTimeout()public int getRemoveAbandonedTimeout()
Timeout in seconds before an abandoned connection can be removed.
Creating a Statement, PreparedStatement or CallableStatement or using one of these to execute a query (using one of the execute methods) resets the lastUsed property of the parent connection.
Abandoned connection cleanup happens when:
getRemoveAbandonedOnBorrow() or getRemoveAbandonedOnMaintenance() = truenumIdle < 2numActive > maxTotal - 3The default value is 300 seconds.
getRemoveAbandonedTimeout in interface BasicDataSourceMXBeangetRemoveAbandonedTimeout()public boolean getRollbackOnReturn()
public long getSoftMinEvictableIdleTimeMillis()
Returns the minimum amount of time a connection may sit idle in the pool before it is eligible for eviction by the idle object evictor, with the extra condition that at least "minIdle" connections remain in the pool.
When minEvictableIdleTimeMillis is set to a positive value,
minEvictableIdleTimeMillis is examined first by the idle connection evictor - i.e. when idle connections are
visited by the evictor, idle time is first compared against minEvictableIdleTimeMillis (without
considering the number of idle connections in the pool) and then against softMinEvictableIdleTimeMillis,
including the minIdle, constraint.
getSoftMinEvictableIdleTimeMillis in interface BasicDataSourceMXBeanpublic boolean getTestOnBorrow()
testOnBorrow property.getTestOnBorrow in interface BasicDataSourceMXBeantestOnBorrowpublic boolean getTestOnCreate()
testOnCreate property.getTestOnCreate in interface BasicDataSourceMXBeantestOnCreatepublic boolean getTestOnReturn()
testOnReturn property.testOnReturnpublic boolean getTestWhileIdle()
testWhileIdle property.getTestWhileIdle in interface BasicDataSourceMXBeantestWhileIdlepublic long getTimeBetweenEvictionRunsMillis()
timeBetweenEvictionRunsMillis property.getTimeBetweenEvictionRunsMillis in interface BasicDataSourceMXBeantimeBetweenEvictionRunsMillispublic String getUrl()
url property.getUrl in interface BasicDataSourceMXBeanurl passed to the JDBC driver to establish connectionspublic String getUsername()
userName property.getUsername in interface BasicDataSourceMXBeanuserName passed to the JDBC driver to establish connectionspublic String getValidationQuery()
getValidationQuery in interface BasicDataSourceMXBeanvalidationQuerypublic int getValidationQueryTimeout()
getValidationQueryTimeout in interface BasicDataSourceMXBeanpublic void invalidateConnection(Connection connection) throws IllegalStateException
connection - The Connection to invalidate.IllegalStateException - if invalidating the connection failed.public boolean isAccessToUnderlyingConnectionAllowed()
isAccessToUnderlyingConnectionAllowed in interface BasicDataSourceMXBeanpublic boolean isClosed()
isClosed in interface BasicDataSourceMXBeanpublic boolean isPoolPreparedStatements()
isPoolPreparedStatements in interface BasicDataSourceMXBeanpublic boolean isWrapperFor(Class<?> iface) throws SQLException
isWrapperFor in interface WrapperSQLExceptionprotected void log(String message)
protected void log(String message, Throwable throwable)
message - TODOthrowable - the throwable.public void postDeregister()
postDeregister in interface MBeanRegistrationpublic void postRegister(Boolean registrationDone)
postRegister in interface MBeanRegistrationpublic void preDeregister()
throws Exception
preDeregister in interface MBeanRegistrationExceptionpublic ObjectName preRegister(MBeanServer server, ObjectName objectName)
preRegister in interface MBeanRegistrationpublic void removeConnectionProperty(String name)
name - Name of the custom connection property to removeaddConnectionProperty(String, String)public void setAbandonedLogWriter(PrintWriter logWriter)
logWriter - The new log writerpublic void setAbandonedUsageTracking(boolean usageTracking)
UsageTracking, configure whether
the connection pool should record a stack trace every time a method is called on a pooled connection and retain
the most recent stack trace to aid debugging of abandoned connections.usageTracking - A value of true will enable the recording of a stack trace on every use of a
pooled connectionpublic 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 setAutoCommitOnReturn(boolean autoCommitOnReturn)
Connection.setAutoCommit(true) if the auto commit
setting is false when the connection is returned. It is true by default.autoCommitOnReturn - Whether or not connections being returned to the pool will be checked and configured
with auto-commit.public void setCacheState(boolean cacheState)
cacheState - The new value for the state caching flagpublic void setConnectionFactoryClassName(String connectionFactoryClassName)
connectionFactoryClassName - A class name.public void setConnectionInitSqls(Collection<String> 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(String connectionProperties)
Format of the string must be [propertyName=property;]*
NOTE - The "user" and "password" properties will be added explicitly, so they do not need to be included here.
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(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 setDefaultQueryTimeout(Integer defaultQueryTimeoutSeconds)
Statements created from this
connection. null means that the driver default will be used.defaultQueryTimeoutSeconds - The default query timeout in seconds.public 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 setDefaultSchema(String defaultSchema)
Sets the default schema.
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.
defaultSchema - the default catalogpublic 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 setDisconnectionSqlCodes(Collection<String> disconnectionSqlCodes)
Overrides the defaults in Utils.DISCONNECTION_SQL_CODES (plus anything starting with
Utils.DISCONNECTION_SQL_CODE_PREFIX). If this property is non-null and getFastFailValidation()
is true, whenever connections created by this datasource generate exceptions with SQL_STATE codes in this
list, they will be marked as "fatally disconnected" and subsequent validations will fail fast (no attempt at
isValid or validation query).
If getFastFailValidation() is false setting this property has no effect.
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.
disconnectionSqlCodes - SQL_STATE codes considered to signal fatal conditionspublic void setDriver(Driver 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.
driver - The JDBC Driver instance to use for this pool.public void setDriverClassLoader(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(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 driver@Deprecated public void setEnableAutoCommitOnReturn(boolean autoCommitOnReturn)
setAutoCommitOnReturn(boolean).Connection.setAutoCommit(true) if the auto commit
setting is false when the connection is returned. It is true by default.autoCommitOnReturn - Whether or not connections being returned to the pool will be checked and configured
with auto-commit.public void setEvictionPolicyClassName(String evictionPolicyClassName)
evictionPolicyClassName - The fully qualified class name of the EvictionPolicy implementationpublic void setFastFailValidation(boolean fastFailValidation)
fastFailValidation - true means connections created by this factory will fast fail validationgetFastFailValidation()public 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 setJmxName(String jmxName)
jmxName - The JMX name that has been requested for this DataSourcepublic void setLifo(boolean lifo)
lifo - the new value for the LIFO propertypublic void setLogAbandoned(boolean logAbandoned)
logAbandoned - new logAbandoned property valuepublic void setLogExpiredConnections(boolean logExpiredConnections)
getMaxConnLifetimeMillis() is set to limit connection lifetime, this property determines whether or
not log messages are generated when the pool closes connections due to maximum lifetime exceeded. Set this
property to false to suppress log messages when connections expire.logExpiredConnections - Whether or not log messages are generated when the pool closes connections due to
maximum lifetime exceeded.public void setLoginTimeout(int loginTimeout)
throws 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 CommonDataSourceloginTimeout - The new login timeout, or zero for no timeoutUnsupportedOperationException - If the DataSource implementation does not support the login timeout
feature.SQLException - if a database access error occurspublic void setLogWriter(PrintWriter logWriter) throws 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 CommonDataSourcelogWriter - The new log writerSQLException - if a database access error occurspublic 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.
maxConnLifetimeMillis - The maximum permitted lifetime of a connection in milliseconds.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 statementspublic void setMaxTotal(int maxTotal)
maxTotal - the new value for maxTotalgetMaxTotal()public void setMaxWaitMillis(long maxWaitMillis)
maxWaitMillis - the new value for MaxWaitMillisgetMaxWaitMillis()public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis)
minEvictableIdleTimeMillis property.minEvictableIdleTimeMillis - the minimum amount of time an object may sit idle in the poolminEvictableIdleTimeMillispublic void setMinIdle(int minIdle)
timeBetweenEvictionRunsMillis has a positive value.minIdle - the new value for minIdleGenericObjectPool.setMinIdle(int)public void setNumTestsPerEvictionRun(int numTestsPerEvictionRun)
numTestsPerEvictionRun property.numTestsPerEvictionRun - the new numTestsPerEvictionRun valuenumTestsPerEvictionRunpublic void setPassword(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 setRemoveAbandonedOnBorrow(boolean removeAbandonedOnBorrow)
removeAbandonedOnBorrow - true means abandoned connections may be removed when connections are borrowed from
the pool.getRemoveAbandonedOnBorrow()public void setRemoveAbandonedOnMaintenance(boolean removeAbandonedOnMaintenance)
removeAbandonedOnMaintenance - true means abandoned connections may be removed on pool maintenance.getRemoveAbandonedOnMaintenance()public void setRemoveAbandonedTimeout(int removeAbandonedTimeout)
Sets the timeout in seconds before an abandoned connection can be removed.
Setting this property has no effect if getRemoveAbandonedOnBorrow() and
getRemoveAbandonedOnMaintenance() are false.
removeAbandonedTimeout - new abandoned timeout in secondsgetRemoveAbandonedTimeout(),
getRemoveAbandonedOnBorrow(),
getRemoveAbandonedOnMaintenance()public void setRollbackOnReturn(boolean rollbackOnReturn)
rollbackOnReturn - whether a connection will be rolled back when it is returned to the pool.public void setSoftMinEvictableIdleTimeMillis(long softMinEvictableIdleTimeMillis)
softMinEvictableIdleTimeMillis - minimum amount of time a connection may sit idle in the pool before it is
eligible for eviction, assuming there are minIdle idle connections in the
pool.getSoftMinEvictableIdleTimeMillis()public void setTestOnBorrow(boolean testOnBorrow)
testOnBorrow property. This property determines whether or not the pool will validate objects
before they are borrowed from the pool.testOnBorrow - new value for testOnBorrow propertypublic void setTestOnCreate(boolean testOnCreate)
testOnCreate property. This property determines whether or not the pool will validate objects
immediately after they are created by the pooltestOnCreate - new value for testOnCreate 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.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.testWhileIdle - new value for testWhileIdle propertypublic void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis)
timeBetweenEvictionRunsMillis property.timeBetweenEvictionRunsMillis - the new time between evictor runstimeBetweenEvictionRunsMillispublic void setUrl(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(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 user namepublic void setValidationQuery(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 validationQueryTimeoutSeconds)
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.
validationQueryTimeoutSeconds - new validation query timeout value in secondsprotected void startPoolMaintenance()
public <T> T unwrap(Class<T> iface) throws SQLException
unwrap in interface WrapperSQLExceptionCopyright © 2000-2020 Apache Software Foundation. All Rights Reserved.