Class BasicDataSource
- java.lang.Object
-
- org.apache.tomcat.dbcp.dbcp2.BasicDataSource
-
- All Implemented Interfaces:
java.lang.AutoCloseable
,java.sql.Wrapper
,javax.management.MBeanRegistration
,javax.sql.CommonDataSource
,javax.sql.DataSource
,BasicDataSourceMXBean
,DataSourceMXBean
- Direct Known Subclasses:
BasicManagedDataSource
public class BasicDataSource extends java.lang.Object implements javax.sql.DataSource, BasicDataSourceMXBean, javax.management.MBeanRegistration, java.lang.AutoCloseable
Basic implementation ofjavax.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 solution for basic requirements.
- Since:
- 2.0
-
-
Constructor Summary
Constructors Constructor Description BasicDataSource()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
addConnectionProperty(java.lang.String name, java.lang.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 data source.protected void
createConnectionPool(PoolableConnectionFactory factory)
Creates a connection pool for this datasource.protected javax.sql.DataSource
createDataSource()
Creates (if necessary) and return the internal data source we are using to manage our connections.protected javax.sql.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 forJDBC connections
.protected PoolableConnectionFactory
createPoolableConnectionFactory(ConnectionFactory driverConnectionFactory)
Creates the PoolableConnectionFactory and attaches it to the connection pool.void
evict()
Manually evicts idle connectionsjava.io.PrintWriter
getAbandonedLogWriter()
Gets the print writer used by this configuration to log information on abandoned objects.boolean
getAbandonedUsageTracking()
If the connection pool implementsUsageTracking
, 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()
Gets the value of the flag that controls whether or not connections being returned to the pool will be checked and configured withConnection.setAutoCommit(true)
if the auto commit setting isfalse
when the connection is returned.boolean
getCacheState()
Gets the state caching flag.java.sql.Connection
getConnection()
Creates (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.lang.String
getConnectionFactoryClassName()
Gets the ConnectionFactoryClassName that has been configured for use by this pool.java.util.List<java.lang.String>
getConnectionInitSqls()
Gets the list of SQL statements executed when a physical connection is first created.java.lang.String[]
getConnectionInitSqlsAsArray()
Provides the same data asgetConnectionInitSqls()
but in an array so it is accessible via JMX.protected GenericObjectPool<PoolableConnection>
getConnectionPool()
Gets the underlying connection pool.java.lang.Boolean
getDefaultAutoCommit()
Gets the default auto-commit property.java.lang.String
getDefaultCatalog()
Gets the default catalog.java.lang.Integer
getDefaultQueryTimeout()
Deprecated.java.time.Duration
getDefaultQueryTimeoutDuration()
Gets the default query timeout that will be used forStatement
s created from this connection.java.lang.Boolean
getDefaultReadOnly()
Gets the default readOnly property.java.lang.String
getDefaultSchema()
Gets the default schema.int
getDefaultTransactionIsolation()
Gets the default transaction isolation state of returned connections.java.util.Set<java.lang.String>
getDisconnectionSqlCodes()
Gets the set of SQL_STATE codes considered to signal fatal conditions.java.lang.String[]
getDisconnectionSqlCodesAsArray()
Provides the same data asgetDisconnectionSqlCodes()
but in an array so it is accessible via JMX.java.sql.Driver
getDriver()
Gets the JDBC Driver that has been configured for use by this pool.java.lang.ClassLoader
getDriverClassLoader()
Gets the class loader specified for loading the JDBC driver.java.lang.String
getDriverClassName()
Gets the JDBC driver class name.java.time.Duration
getDurationBetweenEvictionRuns()
Gets the value of the {code durationBetweenEvictionRuns} property.boolean
getEnableAutoCommitOnReturn()
Deprecated.java.lang.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()
Gets the initial size of the connection pool.java.lang.String
getJmxName()
Gets the JMX name that has been requested for this DataSource.boolean
getLifo()
Gets the LIFO property.boolean
getLogAbandoned()
Flag to log stack traces for application code which abandoned a Statement or Connection.boolean
getLogExpiredConnections()
WhengetMaxConnDuration()
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.java.io.PrintWriter
getLogWriter()
Gets the log writer being used by this data source.java.time.Duration
getMaxConnDuration()
Gets the maximum permitted duration of a connection.long
getMaxConnLifetimeMillis()
Deprecated.UsegetMaxConnDuration()
.int
getMaxIdle()
Gets the maximum number of connections that can remain idle in the pool.int
getMaxOpenPreparedStatements()
Gets the value of themaxOpenPreparedStatements
property.int
getMaxTotal()
Gets the maximum number of active connections that can be allocated at the same time.java.time.Duration
getMaxWaitDuration()
Gets the maximum Duration that the pool will wait for a connection to be returned before throwing an exception.long
getMaxWaitMillis()
Deprecated.UsegetMaxWaitDuration()
.java.time.Duration
getMinEvictableIdleDuration()
Gets the {code minEvictableIdleDuration} property.long
getMinEvictableIdleTimeMillis()
Deprecated.int
getMinIdle()
Gets 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()
Gets the value of the {code numTestsPerEvictionRun} property.java.util.logging.Logger
getParentLogger()
java.lang.String
getPassword()
Gets the password passed to the JDBC driver to establish connections.protected javax.management.ObjectName
getRegisteredJmxName()
Gets the registered JMX ObjectName.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()
Deprecated.java.time.Duration
getRemoveAbandonedTimeoutDuration()
Gets the timeout 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.java.time.Duration
getSoftMinEvictableIdleDuration()
Gets 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.long
getSoftMinEvictableIdleTimeMillis()
Deprecated.boolean
getTestOnBorrow()
Gets the {code testOnBorrow} property.boolean
getTestOnCreate()
Gets the {code testOnCreate} property.boolean
getTestOnReturn()
Gets the value of the {code testOnReturn} property.boolean
getTestWhileIdle()
Gets the value of the {code testWhileIdle} property.long
getTimeBetweenEvictionRunsMillis()
Deprecated.java.lang.String
getUrl()
Gets the JDBC connection {code url} property.java.lang.String
getUsername()
Gets the JDBC connection {code userName} property.java.lang.String
getValidationQuery()
Gets the validation query used to validate connections before returning them.int
getValidationQueryTimeout()
Deprecated.java.time.Duration
getValidationQueryTimeoutDuration()
Gets the validation query timeout.void
invalidateConnection(java.sql.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()
Gets the value of the accessToUnderlyingConnectionAllowed property.boolean
isClearStatementPoolOnReturn()
Returns true if the statement pool is cleared when the connection is returned to its pool.boolean
isClosed()
If true, this data source is closed and no more connections can be retrieved from this data source.boolean
isPoolPreparedStatements()
Returns true if we are pooling statements.boolean
isWrapperFor(java.lang.Class<?> iface)
protected void
log(java.lang.String message)
Logs the given message.protected void
log(java.lang.String message, java.lang.Throwable throwable)
Logs the given throwable.void
postDeregister()
void
postRegister(java.lang.Boolean registrationDone)
void
preDeregister()
javax.management.ObjectName
preRegister(javax.management.MBeanServer server, javax.management.ObjectName objectName)
void
removeConnectionProperty(java.lang.String name)
Removes a custom connection property.void
restart()
Restarts the datasource.void
setAbandonedLogWriter(java.io.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 implementsUsageTracking
, 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 withConnection.setAutoCommit(true)
if the auto commit setting isfalse
when the connection is returned.void
setCacheState(boolean cacheState)
Sets the state caching flag.void
setClearStatementPoolOnReturn(boolean clearStatementPoolOnReturn)
Sets whether the pool of statements (which was enabled withsetPoolPreparedStatements(boolean)
) should be cleared when the connection is returned to its pool.void
setConnectionFactoryClassName(java.lang.String connectionFactoryClassName)
Sets the ConnectionFactory class name.void
setConnectionInitSqls(java.util.Collection<java.lang.String> 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(java.lang.Boolean defaultAutoCommit)
Sets default auto-commit state of connections returned by this datasource.void
setDefaultCatalog(java.lang.String defaultCatalog)
Sets the default catalog.void
setDefaultQueryTimeout(java.lang.Integer defaultQueryTimeoutSeconds)
Deprecated.void
setDefaultQueryTimeout(java.time.Duration defaultQueryTimeoutDuration)
Sets the default query timeout that will be used forStatement
s created from this connection.void
setDefaultReadOnly(java.lang.Boolean defaultReadOnly)
Sets defaultReadonly property.void
setDefaultSchema(java.lang.String defaultSchema)
Sets the default schema.void
setDefaultTransactionIsolation(int defaultTransactionIsolation)
Sets the default transaction isolation state for returned connections.void
setDisconnectionSqlCodes(java.util.Collection<java.lang.String> disconnectionSqlCodes)
Sets the SQL_STATE codes considered to signal fatal conditions.void
setDriver(java.sql.Driver driver)
Sets the JDBC Driver instance to use for this pool.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
setDurationBetweenEvictionRuns(java.time.Duration timeBetweenEvictionRunsMillis)
Sets the {code durationBetweenEvictionRuns} property.void
setEnableAutoCommitOnReturn(boolean autoCommitOnReturn)
Deprecated.void
setEvictionPolicyClassName(java.lang.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(java.lang.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)
WhengetMaxConnDuration()
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(java.io.PrintWriter logWriter)
Sets the log writer being used by this data source.void
setMaxConn(java.time.Duration maxConnDuration)
Sets the maximum permitted lifetime of a connection.void
setMaxConnLifetimeMillis(long maxConnLifetimeMillis)
Deprecated.UsesetMaxConn(Duration)
.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 themaxOpenPreparedStatements
property.void
setMaxTotal(int maxTotal)
Sets the maximum total number of idle and borrows connections that can be active at the same time.void
setMaxWait(java.time.Duration maxWaitDuration)
Sets the MaxWaitMillis property.void
setMaxWaitMillis(long maxWaitMillis)
Deprecated.void
setMinEvictableIdle(java.time.Duration minEvictableIdleDuration)
Sets the {code minEvictableIdleDuration} property.void
setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis)
Deprecated.void
setMinIdle(int minIdle)
Sets the minimum number of idle connections in the pool.void
setNumTestsPerEvictionRun(int numTestsPerEvictionRun)
Sets the value of the {code numTestsPerEvictionRun} property.void
setPassword(java.lang.String password)
Sets the {code password}.void
setPoolPreparedStatements(boolean poolingStatements)
Sets whether to pool statements or not.void
setRemoveAbandonedOnBorrow(boolean removeAbandonedOnBorrow)
void
setRemoveAbandonedOnMaintenance(boolean removeAbandonedOnMaintenance)
void
setRemoveAbandonedTimeout(int removeAbandonedTimeout)
Deprecated.void
setRemoveAbandonedTimeout(java.time.Duration removeAbandonedTimeout)
Sets the timeout 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
setSoftMinEvictableIdle(java.time.Duration 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
setSoftMinEvictableIdleTimeMillis(long softMinEvictableIdleTimeMillis)
Deprecated.void
setTestOnBorrow(boolean testOnBorrow)
Sets the {code testOnBorrow} property.void
setTestOnCreate(boolean testOnCreate)
Sets the {code testOnCreate} property.void
setTestOnReturn(boolean testOnReturn)
Sets thetestOnReturn
property.void
setTestWhileIdle(boolean testWhileIdle)
Sets thetestWhileIdle
property.void
setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis)
Deprecated.void
setUrl(java.lang.String url)
Sets the {code url}.void
setUsername(java.lang.String userName)
Sets the {code userName}.void
setValidationQuery(java.lang.String validationQuery)
Sets the {code validationQuery}.void
setValidationQueryTimeout(int validationQueryTimeoutSeconds)
Deprecated.void
setValidationQueryTimeout(java.time.Duration validationQueryTimeoutDuration)
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.void
start()
Starts the datasource.protected void
startPoolMaintenance()
Starts the connection pool maintenance task, if configured.<T> T
unwrap(java.lang.Class<T> iface)
protected static void
validateConnectionFactory(PoolableConnectionFactory connectionFactory)
Validates the given factory.
-
-
-
Method Detail
-
validateConnectionFactory
protected static void validateConnectionFactory(PoolableConnectionFactory connectionFactory) throws java.lang.Exception
Validates the given factory.- Parameters:
connectionFactory
- the factory- Throws:
java.lang.Exception
- Thrown by one of the factory methods while managing a temporary pooled object.
-
addConnectionProperty
public void addConnectionProperty(java.lang.String name, java.lang.String value)
Adds a custom connection property to the set that will be passed to our JDBC driver. This MUST be called before the first connection is retrieved (along with all the other configuration property setters). Calls to this method after the connection pool has been initialized have no effect.- Parameters:
name
- Name of the custom connection propertyvalue
- Value of the custom connection property
-
close
public 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. To reopen a datasource that has been closed using this method, usestart()
.This method is idempotent - i.e., closing an already closed BasicDataSource has no effect and does not generate exceptions.
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Throws:
java.sql.SQLException
- if an error occurs closing idle connections
-
createConnectionFactory
protected ConnectionFactory createConnectionFactory() throws java.sql.SQLException
Creates a JDBC connection factory for this data source. The JDBC driver is loaded using the following algorithm:- If a Driver instance has been specified via
setDriver(Driver)
use it - If no Driver instance was specified and {code driverClassName} is specified that class is loaded using the
ClassLoader
of this class or, if {code driverClassLoader} is set, {code driverClassName} is loaded with the specifiedClassLoader
. - If {code driverClassName} is specified and the previous attempt fails, the class is loaded using the context class loader of the current thread.
- If a driver still isn't loaded one is loaded via the
DriverManager
using the specified {code url}.
This method exists so subclasses can replace the implementation class.
- Returns:
- A new connection factory.
- Throws:
java.sql.SQLException
- If the connection factory cannot be created
- If a Driver instance has been specified via
-
createConnectionPool
protected void createConnectionPool(PoolableConnectionFactory factory)
Creates a connection pool for this datasource. This method only exists so subclasses can replace the implementation class.This implementation configures all pool properties other than timeBetweenEvictionRunsMillis. Setting that property is deferred to
startPoolMaintenance()
, since setting timeBetweenEvictionRunsMillis to a positive value causesGenericObjectPool
's eviction timer to be started.- Parameters:
factory
- The factory to use to create new connections for this pool.
-
createDataSource
protected javax.sql.DataSource createDataSource() throws java.sql.SQLException
Creates (if necessary) and return the internal data source we are using to manage our connections.- Returns:
- The current internal DataSource or a newly created instance if it has not yet been created.
- Throws:
java.sql.SQLException
- if the object pool cannot be created.
-
createDataSourceInstance
protected javax.sql.DataSource createDataSourceInstance() throws java.sql.SQLException
Creates the actual data source instance. This method only exists so that subclasses can replace the implementation class.- Returns:
- A new DataSource instance
- Throws:
java.sql.SQLException
- if unable to create a datasource instance
-
createObjectPool
protected GenericObjectPool<PoolableConnection> createObjectPool(PoolableConnectionFactory factory, GenericObjectPoolConfig<PoolableConnection> poolConfig, AbandonedConfig abandonedConfig)
Creates an object pool used to provide pooling support forJDBC connections
.- Parameters:
factory
- the object factorypoolConfig
- the object pool configurationabandonedConfig
- the abandoned objects configuration- Returns:
- a non-null instance
-
createPoolableConnectionFactory
protected PoolableConnectionFactory createPoolableConnectionFactory(ConnectionFactory driverConnectionFactory) throws java.sql.SQLException
Creates the PoolableConnectionFactory and attaches it to the connection pool. This method only exists so subclasses can replace the default implementation.- Parameters:
driverConnectionFactory
- JDBC connection factory- Returns:
- A new PoolableConnectionFactory configured with the current configuration of this BasicDataSource
- Throws:
java.sql.SQLException
- if an error occurs creating the PoolableConnectionFactory
-
evict
public void evict() throws java.lang.Exception
Manually evicts idle connections- Throws:
java.lang.Exception
- when there is a problem evicting idle objects.
-
getAbandonedLogWriter
public java.io.PrintWriter getAbandonedLogWriter()
Gets the print writer used by this configuration to log information on abandoned objects.- Returns:
- The print writer used by this configuration to log information on abandoned objects.
-
getAbandonedUsageTracking
public boolean getAbandonedUsageTracking()
If the connection pool implementsUsageTracking
, 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?- Specified by:
getAbandonedUsageTracking
in interfaceDataSourceMXBean
- Returns:
true
if usage tracking is enabled
-
getAutoCommitOnReturn
public boolean getAutoCommitOnReturn()
Gets the value of the flag that controls whether or not connections being returned to the pool will be checked and configured withConnection.setAutoCommit(true)
if the auto commit setting isfalse
when the connection is returned. It istrue
by default.- Returns:
- Whether or not connections being returned to the pool will be checked and configured with auto-commit.
-
getCacheState
public boolean getCacheState()
Gets the state caching flag.- Specified by:
getCacheState
in interfaceDataSourceMXBean
- Returns:
- the state caching flag
-
getConnection
public java.sql.Connection getConnection() throws java.sql.SQLException
Creates (if necessary) and return a connection to the database.- Specified by:
getConnection
in interfacejavax.sql.DataSource
- Returns:
- a database connection
- Throws:
java.sql.SQLException
- if a database access error occurs
-
getConnection
public java.sql.Connection getConnection(java.lang.String user, java.lang.String pass) throws java.sql.SQLException
BasicDataSource does NOT support this method.- Specified by:
getConnection
in interfacejavax.sql.DataSource
- Parameters:
user
- Database user on whose behalf the Connection is being madepass
- The database user's password- Returns:
- nothing - always throws UnsupportedOperationException
- Throws:
java.lang.UnsupportedOperationException
- always thrown.java.sql.SQLException
- if a database access error occurs
-
getConnectionFactoryClassName
public java.lang.String getConnectionFactoryClassName()
Gets the ConnectionFactoryClassName that has been configured for use by this pool.Note: This getter only returns the last value set by a call to
setConnectionFactoryClassName(String)
.- Returns:
- the ConnectionFactoryClassName that has been configured for use by this pool.
- Since:
- 2.7.0
-
getConnectionInitSqls
public java.util.List<java.lang.String> getConnectionInitSqls()
Gets the list of SQL statements executed when a physical connection is first created. Returns an empty list if there are no initialization statements configured.- Returns:
- initialization SQL statements
-
getConnectionInitSqlsAsArray
public java.lang.String[] getConnectionInitSqlsAsArray()
Provides the same data asgetConnectionInitSqls()
but in an array so it is accessible via JMX.- Specified by:
getConnectionInitSqlsAsArray
in interfaceDataSourceMXBean
- Returns:
getConnectionInitSqlsAsArray()
.
-
getConnectionPool
protected GenericObjectPool<PoolableConnection> getConnectionPool()
Gets the underlying connection pool.- Returns:
- the underlying connection pool.
-
getDefaultAutoCommit
public java.lang.Boolean getDefaultAutoCommit()
Gets the default auto-commit property.- Specified by:
getDefaultAutoCommit
in interfaceDataSourceMXBean
- Returns:
- true if default auto-commit is enabled
-
getDefaultCatalog
public java.lang.String getDefaultCatalog()
Gets the default catalog.- Specified by:
getDefaultCatalog
in interfaceDataSourceMXBean
- Returns:
- the default catalog
-
getDefaultQueryTimeout
@Deprecated public java.lang.Integer getDefaultQueryTimeout()
Deprecated.Gets the default query timeout that will be used forStatement
s created from this connection.null
means that the driver default will be used.- Returns:
- The default query timeout in seconds.
-
getDefaultQueryTimeoutDuration
public java.time.Duration getDefaultQueryTimeoutDuration()
Gets the default query timeout that will be used forStatement
s created from this connection.null
means that the driver default will be used.- Returns:
- The default query timeout Duration.
- Since:
- 2.10.0
-
getDefaultReadOnly
public java.lang.Boolean getDefaultReadOnly()
Gets the default readOnly property.- Specified by:
getDefaultReadOnly
in interfaceDataSourceMXBean
- Returns:
- true if connections are readOnly by default
-
getDefaultSchema
public java.lang.String getDefaultSchema()
Gets the default schema.- Specified by:
getDefaultSchema
in interfaceDataSourceMXBean
- Returns:
- the default schema.
- Since:
- 2.5.0
-
getDefaultTransactionIsolation
public int getDefaultTransactionIsolation()
Gets the default transaction isolation state of returned connections.- Specified by:
getDefaultTransactionIsolation
in interfaceDataSourceMXBean
- Returns:
- the default value for transaction isolation state
- See Also:
Connection.getTransactionIsolation()
-
getDisconnectionSqlCodes
public java.util.Set<java.lang.String> getDisconnectionSqlCodes()
Gets the set of SQL_STATE codes considered to signal fatal conditions.- Returns:
- fatal disconnection state codes
- Since:
- 2.1
- See Also:
setDisconnectionSqlCodes(Collection)
-
getDisconnectionSqlCodesAsArray
public java.lang.String[] getDisconnectionSqlCodesAsArray()
Provides the same data asgetDisconnectionSqlCodes()
but in an array so it is accessible via JMX.- Specified by:
getDisconnectionSqlCodesAsArray
in interfaceDataSourceMXBean
- Returns:
getDisconnectionSqlCodesAsArray()
.- Since:
- 2.1
-
getDriver
public java.sql.Driver getDriver()
Gets the JDBC Driver that has been configured for use by this pool.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 viasetDriverClassName(String)
.- Returns:
- the JDBC Driver that has been configured for use by this pool
-
getDriverClassLoader
public java.lang.ClassLoader getDriverClassLoader()
Gets the class loader specified for loading the JDBC driver. Returnsnull
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 viasetDriver(Driver)
.- Returns:
- The class loader specified for loading the JDBC driver.
-
getDriverClassName
public java.lang.String getDriverClassName()
Gets the JDBC driver class name.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 viasetDriver(Driver)
.- Specified by:
getDriverClassName
in interfaceDataSourceMXBean
- Returns:
- the JDBC driver class name
-
getEnableAutoCommitOnReturn
@Deprecated public boolean getEnableAutoCommitOnReturn()
Deprecated.Gets the value of the flag that controls whether or not connections being returned to the pool will be checked and configured withConnection.setAutoCommit(true)
if the auto commit setting isfalse
when the connection is returned. It istrue
by default.- Returns:
- Whether or not connections being returned to the pool will be checked and configured with auto-commit.
-
getEvictionPolicyClassName
public java.lang.String getEvictionPolicyClassName()
Gets the EvictionPolicy implementation in use with this connection pool.- Returns:
- The EvictionPolicy implementation in use with this connection pool.
-
getFastFailValidation
public boolean getFastFailValidation()
True means that validation will fail immediately for connections that have previously thrown SQLExceptions with SQL_STATE indicating fatal disconnection errors.- Specified by:
getFastFailValidation
in interfaceDataSourceMXBean
- Returns:
- true if connections created by this datasource will fast fail validation.
- Since:
- 2.1
- See Also:
setDisconnectionSqlCodes(Collection)
-
getInitialSize
public int getInitialSize()
Gets the initial size of the connection pool.- Specified by:
getInitialSize
in interfaceDataSourceMXBean
- Returns:
- the number of connections created when the pool is initialized
-
getJmxName
public java.lang.String getJmxName()
Gets the JMX name that has been requested for this DataSource. If the requested name is not valid, an alternative may be chosen.- Returns:
- The JMX name that has been requested for this DataSource.
-
getLifo
public boolean getLifo()
Gets the LIFO property.- Specified by:
getLifo
in interfaceDataSourceMXBean
- Returns:
- true if connection pool behaves as a LIFO queue.
-
getLogAbandoned
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.
- Specified by:
getLogAbandoned
in interfaceDataSourceMXBean
- Returns:
getLogAbandoned()
.
-
getLogExpiredConnections
public boolean getLogExpiredConnections()
WhengetMaxConnDuration()
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.- Specified by:
getLogExpiredConnections
in interfaceDataSourceMXBean
- Returns:
getLogExpiredConnections()
.- Since:
- 2.1
-
getLoginTimeout
public int getLoginTimeout() throws java.sql.SQLException
BasicDataSource does NOT support this method.Gets the login timeout (in seconds) for connecting to the database.
Calls
createDataSource()
, so has the side effect of initializing the connection pool.- Specified by:
getLoginTimeout
in interfacejavax.sql.CommonDataSource
- Specified by:
getLoginTimeout
in interfacejavax.sql.DataSource
- Returns:
- login timeout in seconds
- Throws:
java.sql.SQLException
- if a database access error occursjava.lang.UnsupportedOperationException
- If the DataSource implementation does not support the login timeout feature.
-
getLogWriter
public java.io.PrintWriter getLogWriter() throws java.sql.SQLException
Gets the log writer being used by this data source.Calls
createDataSource()
, so has the side effect of initializing the connection pool.- Specified by:
getLogWriter
in interfacejavax.sql.CommonDataSource
- Specified by:
getLogWriter
in interfacejavax.sql.DataSource
- Returns:
- log writer in use
- Throws:
java.sql.SQLException
- if a database access error occurs
-
getMaxConnDuration
public java.time.Duration getMaxConnDuration()
Gets the maximum permitted duration of a connection. A value of zero or less indicates an infinite lifetime.- Returns:
- the maximum permitted duration of a connection.
- Since:
- 2.10.0
-
getMaxConnLifetimeMillis
@Deprecated public long getMaxConnLifetimeMillis()
Deprecated.UsegetMaxConnDuration()
.Gets the maximum permitted lifetime of a connection in milliseconds. A value of zero or less indicates an infinite lifetime.- Specified by:
getMaxConnLifetimeMillis
in interfaceDataSourceMXBean
- Returns:
getMaxConnLifetimeMillis()
.
-
getMaxIdle
public int getMaxIdle()
Gets 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
- Specified by:
getMaxIdle
in interfaceDataSourceMXBean
- Returns:
- the maximum number of idle connections
-
getMaxOpenPreparedStatements
public int getMaxOpenPreparedStatements()
Gets the value of themaxOpenPreparedStatements
property.- Specified by:
getMaxOpenPreparedStatements
in interfaceDataSourceMXBean
- Returns:
- the maximum number of open statements
-
getMaxTotal
public int getMaxTotal()
Gets the maximum number of active connections that can be allocated at the same time.A negative number means that there is no limit.
- Specified by:
getMaxTotal
in interfaceDataSourceMXBean
- Returns:
- the maximum number of active connections
-
getMaxWaitDuration
public java.time.Duration getMaxWaitDuration()
Gets the maximum Duration 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.- Returns:
- the maxWaitDuration property value.
- Since:
- 2.10.0
-
getMaxWaitMillis
@Deprecated public long getMaxWaitMillis()
Deprecated.UsegetMaxWaitDuration()
.Gets 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.- Specified by:
getMaxWaitMillis
in interfaceDataSourceMXBean
- Returns:
- the maxWaitMillis property value.
-
getMinEvictableIdleDuration
public java.time.Duration getMinEvictableIdleDuration()
Gets the {code minEvictableIdleDuration} property.- Returns:
- the value of the {code minEvictableIdleDuration} property
- Since:
- 2.10.0
- See Also:
setMinEvictableIdle(Duration)
-
getMinEvictableIdleTimeMillis
@Deprecated public long getMinEvictableIdleTimeMillis()
Deprecated.Gets the {code minEvictableIdleDuration} property.- Specified by:
getMinEvictableIdleTimeMillis
in interfaceDataSourceMXBean
- Returns:
- the value of the {code minEvictableIdleDuration} property
- See Also:
setMinEvictableIdle(Duration)
-
getMinIdle
public int getMinIdle()
Gets the minimum number of idle connections in the pool. The pool attempts to ensure that minIdle connections are available when the idle object evictor runs. The value of this property has no effect unless {code durationBetweenEvictionRuns} has a positive value.- Specified by:
getMinIdle
in interfaceDataSourceMXBean
- Returns:
- the minimum number of idle connections
- See Also:
GenericObjectPool.getMinIdle()
-
getNumActive
public int getNumActive()
[Read Only] The current number of active connections that have been allocated from this data source.- Specified by:
getNumActive
in interfaceDataSourceMXBean
- Returns:
- the current number of active connections
-
getNumIdle
public int getNumIdle()
[Read Only] The current number of idle connections that are waiting to be allocated from this data source.- Specified by:
getNumIdle
in interfaceDataSourceMXBean
- Returns:
- the current number of idle connections
-
getNumTestsPerEvictionRun
public int getNumTestsPerEvictionRun()
Gets the value of the {code numTestsPerEvictionRun} property.- Specified by:
getNumTestsPerEvictionRun
in interfaceDataSourceMXBean
- Returns:
- the number of objects to examine during idle object evictor runs
- See Also:
setNumTestsPerEvictionRun(int)
-
getParentLogger
public java.util.logging.Logger getParentLogger() throws java.sql.SQLFeatureNotSupportedException
- Specified by:
getParentLogger
in interfacejavax.sql.CommonDataSource
- Throws:
java.sql.SQLFeatureNotSupportedException
-
getPassword
public java.lang.String getPassword()
Gets the password passed to the JDBC driver to establish connections.- Specified by:
getPassword
in interfaceBasicDataSourceMXBean
- Returns:
- the connection password
-
getRegisteredJmxName
protected javax.management.ObjectName getRegisteredJmxName()
Gets the registered JMX ObjectName.- Returns:
- the registered JMX ObjectName.
-
getRemoveAbandonedOnBorrow
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:- Specified by:
getRemoveAbandonedOnBorrow
in interfaceDataSourceMXBean
- Returns:
getRemoveAbandonedOnBorrow()
.- See Also:
getRemoveAbandonedTimeoutDuration()
-
getRemoveAbandonedOnMaintenance
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.- Specified by:
getRemoveAbandonedOnMaintenance
in interfaceDataSourceMXBean
- Returns:
getRemoveAbandonedOnMaintenance()
.- See Also:
getRemoveAbandonedTimeoutDuration()
-
getRemoveAbandonedTimeout
@Deprecated public int getRemoveAbandonedTimeout()
Deprecated.Gets the 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()
orgetRemoveAbandonedOnMaintenance()
= truenumIdle
< 2numActive
>maxTotal
- 3
The default value is 300 seconds.
- Specified by:
getRemoveAbandonedTimeout
in interfaceDataSourceMXBean
- Returns:
getRemoveAbandonedTimeout()
.
-
getRemoveAbandonedTimeoutDuration
public java.time.Duration getRemoveAbandonedTimeoutDuration()
Gets the timeout 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()
orgetRemoveAbandonedOnMaintenance()
= truenumIdle
< 2numActive
>maxTotal
- 3
The default value is 300 seconds.
- Returns:
- Timeout before an abandoned connection can be removed.
- Since:
- 2.10.0
-
getRollbackOnReturn
public 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.- Returns:
- whether a connection will be rolled back when it is returned to the pool.
-
getSoftMinEvictableIdleDuration
public java.time.Duration getSoftMinEvictableIdleDuration()
Gets 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 againstminEvictableIdleTimeMillis
(without considering the number of idle connections in the pool) and then againstsoftMinEvictableIdleTimeMillis
, including theminIdle
, constraint.- Returns:
- 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
- Since:
- 2.10.0
-
getSoftMinEvictableIdleTimeMillis
@Deprecated public long getSoftMinEvictableIdleTimeMillis()
Deprecated.Gets 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 againstminEvictableIdleTimeMillis
(without considering the number of idle connections in the pool) and then againstsoftMinEvictableIdleTimeMillis
, including theminIdle
, constraint.- Specified by:
getSoftMinEvictableIdleTimeMillis
in interfaceDataSourceMXBean
- Returns:
- 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
-
getTestOnBorrow
public boolean getTestOnBorrow()
Gets the {code testOnBorrow} property.- Specified by:
getTestOnBorrow
in interfaceDataSourceMXBean
- Returns:
- true if objects are validated before being borrowed from the pool
- See Also:
setTestOnBorrow(boolean)
-
getTestOnCreate
public boolean getTestOnCreate()
Gets the {code testOnCreate} property.- Specified by:
getTestOnCreate
in interfaceDataSourceMXBean
- Returns:
- true if objects are validated immediately after they are created by the pool
- See Also:
setTestOnCreate(boolean)
-
getTestOnReturn
public boolean getTestOnReturn()
Gets the value of the {code testOnReturn} property.- Returns:
- true if objects are validated before being returned to the pool
- See Also:
setTestOnReturn(boolean)
-
getTestWhileIdle
public boolean getTestWhileIdle()
Gets the value of the {code testWhileIdle} property.- Specified by:
getTestWhileIdle
in interfaceDataSourceMXBean
- Returns:
- true if objects examined by the idle object evictor are validated
- See Also:
setTestWhileIdle(boolean)
-
getDurationBetweenEvictionRuns
public java.time.Duration getDurationBetweenEvictionRuns()
Gets the value of the {code durationBetweenEvictionRuns} property.- Returns:
- the time (in milliseconds) between evictor runs
- Since:
- 2.10.0
- See Also:
setDurationBetweenEvictionRuns(Duration)
-
getTimeBetweenEvictionRunsMillis
@Deprecated public long getTimeBetweenEvictionRunsMillis()
Deprecated.Gets the value of the {code durationBetweenEvictionRuns} property.- Specified by:
getTimeBetweenEvictionRunsMillis
in interfaceDataSourceMXBean
- Returns:
- the time (in milliseconds) between evictor runs
- See Also:
setDurationBetweenEvictionRuns(Duration)
-
getUrl
public java.lang.String getUrl()
Gets the JDBC connection {code url} property.- Specified by:
getUrl
in interfaceDataSourceMXBean
- Returns:
- the {code url} passed to the JDBC driver to establish connections
-
getUsername
public java.lang.String getUsername()
Gets the JDBC connection {code userName} property.- Specified by:
getUsername
in interfaceDataSourceMXBean
- Returns:
- the {code userName} passed to the JDBC driver to establish connections
-
getValidationQuery
public java.lang.String getValidationQuery()
Gets the validation query used to validate connections before returning them.- Specified by:
getValidationQuery
in interfaceDataSourceMXBean
- Returns:
- the SQL validation query
- See Also:
setValidationQuery(String)
-
getValidationQueryTimeoutDuration
public java.time.Duration getValidationQueryTimeoutDuration()
Gets the validation query timeout.- Returns:
- the timeout in seconds before connection validation queries fail.
-
getValidationQueryTimeout
@Deprecated public int getValidationQueryTimeout()
Deprecated.Gets the validation query timeout.- Specified by:
getValidationQueryTimeout
in interfaceDataSourceMXBean
- Returns:
- the timeout in seconds before connection validation queries fail.
-
invalidateConnection
public void invalidateConnection(java.sql.Connection connection) throws java.lang.IllegalStateException
Manually invalidates a connection, effectively requesting the pool to try to close it, remove it from the pool and reclaim pool capacity.- Parameters:
connection
- The Connection to invalidate.- Throws:
java.lang.IllegalStateException
- if invalidating the connection failed.- Since:
- 2.1
-
isAccessToUnderlyingConnectionAllowed
public boolean isAccessToUnderlyingConnectionAllowed()
Gets the value of the accessToUnderlyingConnectionAllowed property.- Specified by:
isAccessToUnderlyingConnectionAllowed
in interfaceDataSourceMXBean
- Returns:
- true if access to the underlying connection is allowed, false otherwise.
-
isClearStatementPoolOnReturn
public boolean isClearStatementPoolOnReturn()
Returns true if the statement pool is cleared when the connection is returned to its pool.- Specified by:
isClearStatementPoolOnReturn
in interfaceDataSourceMXBean
- Returns:
- true if the statement pool is cleared at connection return
- Since:
- 2.8.0
-
isClosed
public boolean isClosed()
If true, this data source is closed and no more connections can be retrieved from this data source.- Specified by:
isClosed
in interfaceDataSourceMXBean
- Returns:
- true, if the data source is closed; false otherwise
-
isPoolPreparedStatements
public boolean isPoolPreparedStatements()
Returns true if we are pooling statements.- Specified by:
isPoolPreparedStatements
in interfaceDataSourceMXBean
- Returns:
- true if prepared and callable statements are pooled
-
isWrapperFor
public boolean isWrapperFor(java.lang.Class<?> iface) throws java.sql.SQLException
- Specified by:
isWrapperFor
in interfacejava.sql.Wrapper
- Throws:
java.sql.SQLException
-
log
protected void log(java.lang.String message)
Logs the given message.- Parameters:
message
- the message to log.
-
log
protected void log(java.lang.String message, java.lang.Throwable throwable)
Logs the given throwable.- Parameters:
message
- TODOthrowable
- the throwable.- Since:
- 2.7.0
-
postDeregister
public void postDeregister()
- Specified by:
postDeregister
in interfacejavax.management.MBeanRegistration
-
postRegister
public void postRegister(java.lang.Boolean registrationDone)
- Specified by:
postRegister
in interfacejavax.management.MBeanRegistration
-
preDeregister
public void preDeregister() throws java.lang.Exception
- Specified by:
preDeregister
in interfacejavax.management.MBeanRegistration
- Throws:
java.lang.Exception
-
preRegister
public javax.management.ObjectName preRegister(javax.management.MBeanServer server, javax.management.ObjectName objectName)
- Specified by:
preRegister
in interfacejavax.management.MBeanRegistration
-
removeConnectionProperty
public void removeConnectionProperty(java.lang.String name)
Removes a custom connection property.- Parameters:
name
- Name of the custom connection property to remove- See Also:
addConnectionProperty(String, String)
-
restart
public void restart() throws java.sql.SQLException
Restarts the datasource.This method calls
close()
andstart()
in sequence within synchronized scope so any connection requests that come in while the datasource is shutting down will be served by the new pool.Idle connections that are stored in the connection pool when this method is invoked are closed, but 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. These connections do not count ingetMaxTotal()
orgetNumActive()
after invoking this method. For example, if there are 3 connections checked out by clients whenrestart()
is invoked, after this method is called,getNumActive()
will return 0 and up togetMaxTotal()
+ 3 connections may be open until the connections sourced from the original pool are returned.The new connection pool created by this method is initialized with currently set configuration properties.
- Specified by:
restart
in interfaceDataSourceMXBean
- Throws:
java.sql.SQLException
- if an error occurs initializing the datasource
-
setAbandonedLogWriter
public void setAbandonedLogWriter(java.io.PrintWriter logWriter)
Sets the print writer to be used by this configuration to log information on abandoned objects.- Parameters:
logWriter
- The new log writer
-
setAbandonedUsageTracking
public void setAbandonedUsageTracking(boolean usageTracking)
If the connection pool implementsUsageTracking
, 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.- Parameters:
usageTracking
- A value oftrue
will enable the recording of a stack trace on every use of a pooled connection
-
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)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.
- Parameters:
allow
- Access to the underlying connection is granted when true.
-
setAutoCommitOnReturn
public 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 withConnection.setAutoCommit(true)
if the auto commit setting isfalse
when the connection is returned. It istrue
by default.- Parameters:
autoCommitOnReturn
- Whether or not connections being returned to the pool will be checked and configured with auto-commit.- Since:
- 2.6.0
-
setCacheState
public void setCacheState(boolean cacheState)
Sets the state caching flag.- Parameters:
cacheState
- The new value for the state caching flag
-
setClearStatementPoolOnReturn
public void setClearStatementPoolOnReturn(boolean clearStatementPoolOnReturn)
Sets whether the pool of statements (which was enabled withsetPoolPreparedStatements(boolean)
) should be cleared when the connection is returned to its pool. Default is false.- Parameters:
clearStatementPoolOnReturn
- clear or not- Since:
- 2.8.0
-
setConnectionFactoryClassName
public void setConnectionFactoryClassName(java.lang.String connectionFactoryClassName)
Sets the ConnectionFactory class name.- Parameters:
connectionFactoryClassName
- A class name.- Since:
- 2.7.0
-
setConnectionInitSqls
public void setConnectionInitSqls(java.util.Collection<java.lang.String> connectionInitSqls)
Sets the list of SQL statements to be executed when a physical connection is first created.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.
- Parameters:
connectionInitSqls
- Collection of SQL statements to execute on connection creation
-
setConnectionProperties
public void setConnectionProperties(java.lang.String connectionProperties)
Sets the connection properties passed to driver.connect(...).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.
- Parameters:
connectionProperties
- the connection properties used to create new connections
-
setDefaultAutoCommit
public void setDefaultAutoCommit(java.lang.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.
- Parameters:
defaultAutoCommit
- default auto-commit value
-
setDefaultCatalog
public 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.
- Parameters:
defaultCatalog
- the default catalog
-
setDefaultQueryTimeout
public void setDefaultQueryTimeout(java.time.Duration defaultQueryTimeoutDuration)
Sets the default query timeout that will be used forStatement
s created from this connection.null
means that the driver default will be used.- Parameters:
defaultQueryTimeoutDuration
- The default query timeout Duration.- Since:
- 2.10.0
-
setDefaultQueryTimeout
@Deprecated public void setDefaultQueryTimeout(java.lang.Integer defaultQueryTimeoutSeconds)
Deprecated.Sets the default query timeout that will be used forStatement
s created from this connection.null
means that the driver default will be used.- Parameters:
defaultQueryTimeoutSeconds
- The default query timeout in seconds.
-
setDefaultReadOnly
public void setDefaultReadOnly(java.lang.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.
- Parameters:
defaultReadOnly
- default read-only value
-
setDefaultSchema
public void setDefaultSchema(java.lang.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.
- Parameters:
defaultSchema
- the default catalog- Since:
- 2.5.0
-
setDefaultTransactionIsolation
public 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.
- Parameters:
defaultTransactionIsolation
- the default transaction isolation state- See Also:
Connection.getTransactionIsolation()
-
setDisconnectionSqlCodes
public void setDisconnectionSqlCodes(java.util.Collection<java.lang.String> disconnectionSqlCodes)
Sets the SQL_STATE codes considered to signal fatal conditions.Overrides the defaults in
Utils.DISCONNECTION_SQL_CODES
(plus anything starting withUtils.DISCONNECTION_SQL_CODE_PREFIX
). If this property is non-null andgetFastFailValidation()
istrue
, 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()
isfalse
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
.- Parameters:
disconnectionSqlCodes
- SQL_STATE codes considered to signal fatal conditions- Since:
- 2.1
-
setDriver
public void setDriver(java.sql.Driver driver)
Sets the JDBC Driver instance to use for this 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.
- Parameters:
driver
- The JDBC Driver instance to use for this pool.
-
setDriverClassLoader
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.
- Parameters:
driverClassLoader
- the class loader with which to load the JDBC driver
-
setDriverClassName
public 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.
- Parameters:
driverClassName
- the class name of the JDBC driver
-
setEnableAutoCommitOnReturn
@Deprecated public void setEnableAutoCommitOnReturn(boolean autoCommitOnReturn)
Deprecated.Sets the value of the flag that controls whether or not connections being returned to the pool will be checked and configured withConnection.setAutoCommit(true)
if the auto commit setting isfalse
when the connection is returned. It istrue
by default.- Parameters:
autoCommitOnReturn
- Whether or not connections being returned to the pool will be checked and configured with auto-commit.
-
setEvictionPolicyClassName
public void setEvictionPolicyClassName(java.lang.String evictionPolicyClassName)
Sets the EvictionPolicy implementation to use with this connection pool.- Parameters:
evictionPolicyClassName
- The fully qualified class name of the EvictionPolicy implementation
-
setFastFailValidation
public void setFastFailValidation(boolean fastFailValidation)
- Parameters:
fastFailValidation
- true means connections created by this factory will fast fail validation- Since:
- 2.1
- See Also:
getFastFailValidation()
-
setInitialSize
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.
- Parameters:
initialSize
- the number of connections created when the pool is initialized
-
setJmxName
public void setJmxName(java.lang.String jmxName)
Sets the JMX name that has been requested for this DataSource. If the requested name is not valid, an alternative may be chosen. This DataSource will attempt to register itself using this name. If another component registers this DataSource with JMX and this name is valid this name will be used in preference to any specified by the other component.- Parameters:
jmxName
- The JMX name that has been requested for this DataSource
-
setLifo
public void setLifo(boolean lifo)
Sets the LIFO property. True means the pool behaves as a LIFO queue; false means FIFO.- Parameters:
lifo
- the new value for the LIFO property
-
setLogAbandoned
public void setLogAbandoned(boolean logAbandoned)
- Parameters:
logAbandoned
- new logAbandoned property value
-
setLogExpiredConnections
public void setLogExpiredConnections(boolean logExpiredConnections)
WhengetMaxConnDuration()
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.- Parameters:
logExpiredConnections
- Whether or not log messages are generated when the pool closes connections due to maximum lifetime exceeded.
-
setLoginTimeout
public void setLoginTimeout(int loginTimeout) throws java.sql.SQLException
BasicDataSource does NOT support this method.Set the login timeout (in seconds) for connecting to the database.
Calls
createDataSource()
, so has the side effect of initializing the connection pool.- Specified by:
setLoginTimeout
in interfacejavax.sql.CommonDataSource
- Specified by:
setLoginTimeout
in interfacejavax.sql.DataSource
- Parameters:
loginTimeout
- The new login timeout, or zero for no timeout- Throws:
java.lang.UnsupportedOperationException
- If the DataSource implementation does not support the login timeout feature.java.sql.SQLException
- if a database access error occurs
-
setLogWriter
public 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.- Specified by:
setLogWriter
in interfacejavax.sql.CommonDataSource
- Specified by:
setLogWriter
in interfacejavax.sql.DataSource
- Parameters:
logWriter
- The new log writer- Throws:
java.sql.SQLException
- if a database access error occurs
-
setMaxConn
public void setMaxConn(java.time.Duration maxConnDuration)
Sets the maximum permitted lifetime of a connection. 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.
- Parameters:
maxConnDuration
- The maximum permitted lifetime of a connection.- Since:
- 2.10.0
-
setMaxConnLifetimeMillis
@Deprecated public void setMaxConnLifetimeMillis(long maxConnLifetimeMillis)
Deprecated.UsesetMaxConn(Duration)
.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.
- Parameters:
maxConnLifetimeMillis
- The maximum permitted lifetime of a connection in milliseconds.
-
setMaxIdle
public void setMaxIdle(int maxIdle)
Sets the maximum number of connections that can remain idle in the pool. Excess idle connections are destroyed on return to the pool.- Parameters:
maxIdle
- the new value for maxIdle- See Also:
getMaxIdle()
-
setMaxOpenPreparedStatements
public void setMaxOpenPreparedStatements(int maxOpenStatements)
Sets the value of themaxOpenPreparedStatements
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.
- Parameters:
maxOpenStatements
- the new maximum number of prepared statements
-
setMaxTotal
public void setMaxTotal(int maxTotal)
Sets the maximum total number of idle and borrows connections that can be active at the same time. Use a negative value for no limit.- Parameters:
maxTotal
- the new value for maxTotal- See Also:
getMaxTotal()
-
setMaxWait
public void setMaxWait(java.time.Duration maxWaitDuration)
Sets the MaxWaitMillis property. Use -1 to make the pool wait indefinitely.- Parameters:
maxWaitDuration
- the new value for MaxWaitMillis- Since:
- 2.10.0
- See Also:
getMaxWaitDuration()
-
setMaxWaitMillis
@Deprecated public void setMaxWaitMillis(long maxWaitMillis)
Deprecated.Sets the MaxWaitMillis property. Use -1 to make the pool wait indefinitely.- Parameters:
maxWaitMillis
- the new value for MaxWaitMillis- See Also:
getMaxWaitDuration()
-
setMinEvictableIdle
public void setMinEvictableIdle(java.time.Duration minEvictableIdleDuration)
Sets the {code minEvictableIdleDuration} property.- Parameters:
minEvictableIdleDuration
- the minimum amount of time an object may sit idle in the pool- Since:
- 2.10.0
- See Also:
setMinEvictableIdle(Duration)
-
setMinEvictableIdleTimeMillis
@Deprecated public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis)
Deprecated.Sets the {code minEvictableIdleDuration} property.- Parameters:
minEvictableIdleTimeMillis
- the minimum amount of time an object may sit idle in the pool- See Also:
setMinEvictableIdle(Duration)
-
setMinIdle
public void setMinIdle(int minIdle)
Sets the minimum number of idle connections in the pool. The pool attempts to ensure that minIdle connections are available when the idle object evictor runs. The value of this property has no effect unless {code durationBetweenEvictionRuns} has a positive value.- Parameters:
minIdle
- the new value for minIdle- See Also:
GenericObjectPool.setMinIdle(int)
-
setNumTestsPerEvictionRun
public void setNumTestsPerEvictionRun(int numTestsPerEvictionRun)
Sets the value of the {code numTestsPerEvictionRun} property.- Parameters:
numTestsPerEvictionRun
- the new {code numTestsPerEvictionRun} value- See Also:
setNumTestsPerEvictionRun(int)
-
setPassword
public void setPassword(java.lang.String password)
Sets the {code 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.
- Parameters:
password
- new value for the password
-
setPoolPreparedStatements
public 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.
- Parameters:
poolingStatements
- pooling on or off
-
setRemoveAbandonedOnBorrow
public void setRemoveAbandonedOnBorrow(boolean removeAbandonedOnBorrow)
- Parameters:
removeAbandonedOnBorrow
- true means abandoned connections may be removed when connections are borrowed from the pool.- See Also:
getRemoveAbandonedOnBorrow()
-
setRemoveAbandonedOnMaintenance
public void setRemoveAbandonedOnMaintenance(boolean removeAbandonedOnMaintenance)
- Parameters:
removeAbandonedOnMaintenance
- true means abandoned connections may be removed on pool maintenance.- See Also:
getRemoveAbandonedOnMaintenance()
-
setRemoveAbandonedTimeout
public void setRemoveAbandonedTimeout(java.time.Duration removeAbandonedTimeout)
Sets the timeout before an abandoned connection can be removed.Setting this property has no effect if
getRemoveAbandonedOnBorrow()
and {code getRemoveAbandonedOnMaintenance()} are false.- Parameters:
removeAbandonedTimeout
- new abandoned timeout- Since:
- 2.10.0
- See Also:
getRemoveAbandonedTimeoutDuration()
,getRemoveAbandonedOnBorrow()
,getRemoveAbandonedOnMaintenance()
-
setRemoveAbandonedTimeout
@Deprecated public void setRemoveAbandonedTimeout(int removeAbandonedTimeout)
Deprecated.Sets the timeout in seconds before an abandoned connection can be removed.Setting this property has no effect if
getRemoveAbandonedOnBorrow()
andgetRemoveAbandonedOnMaintenance()
are false.- Parameters:
removeAbandonedTimeout
- new abandoned timeout in seconds- See Also:
getRemoveAbandonedTimeoutDuration()
,getRemoveAbandonedOnBorrow()
,getRemoveAbandonedOnMaintenance()
-
setRollbackOnReturn
public 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.- Parameters:
rollbackOnReturn
- whether a connection will be rolled back when it is returned to the pool.
-
setSoftMinEvictableIdle
public void setSoftMinEvictableIdle(java.time.Duration 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.- Parameters:
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.- Since:
- 2.10.0
- See Also:
getSoftMinEvictableIdleTimeMillis()
-
setSoftMinEvictableIdleTimeMillis
@Deprecated public void setSoftMinEvictableIdleTimeMillis(long softMinEvictableIdleTimeMillis)
Deprecated.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.- Parameters:
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.- See Also:
getSoftMinEvictableIdleTimeMillis()
-
setTestOnBorrow
public void setTestOnBorrow(boolean testOnBorrow)
Sets the {code testOnBorrow} property. This property determines whether or not the pool will validate objects before they are borrowed from the pool.- Parameters:
testOnBorrow
- new value for testOnBorrow property
-
setTestOnCreate
public void setTestOnCreate(boolean testOnCreate)
Sets the {code testOnCreate} property. This property determines whether or not the pool will validate objects immediately after they are created by the pool- Parameters:
testOnCreate
- new value for testOnCreate property
-
setTestOnReturn
public void setTestOnReturn(boolean testOnReturn)
Sets thetestOnReturn
property. This property determines whether or not the pool will validate objects before they are returned to the pool.- Parameters:
testOnReturn
- new value for testOnReturn property
-
setTestWhileIdle
public void setTestWhileIdle(boolean testWhileIdle)
Sets thetestWhileIdle
property. This property determines whether or not the idle object evictor will validate connections.- Parameters:
testWhileIdle
- new value for testWhileIdle property
-
setDurationBetweenEvictionRuns
public void setDurationBetweenEvictionRuns(java.time.Duration timeBetweenEvictionRunsMillis)
Sets the {code durationBetweenEvictionRuns} property.- Parameters:
timeBetweenEvictionRunsMillis
- the new time between evictor runs- Since:
- 2.10.0
- See Also:
setDurationBetweenEvictionRuns(Duration)
-
setTimeBetweenEvictionRunsMillis
@Deprecated public void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis)
Deprecated.Sets the {code durationBetweenEvictionRuns} property.- Parameters:
timeBetweenEvictionRunsMillis
- the new time between evictor runs- See Also:
setDurationBetweenEvictionRuns(Duration)
-
setUrl
public void setUrl(java.lang.String url)
Sets the {code 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.
- Parameters:
url
- the new value for the JDBC connection url
-
setUsername
public void setUsername(java.lang.String userName)
Sets the {code 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.
- Parameters:
userName
- the new value for the JDBC connection user name
-
setValidationQuery
public void setValidationQuery(java.lang.String validationQuery)
Sets the {code 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.
- Parameters:
validationQuery
- the new value for the validation query
-
setValidationQueryTimeout
public void setValidationQueryTimeout(java.time.Duration validationQueryTimeoutDuration)
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. Use a value less than or equal to 0 for no 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.
- Parameters:
validationQueryTimeoutDuration
- new validation query timeout value in seconds- Since:
- 2.10.0
-
setValidationQueryTimeout
@Deprecated public void setValidationQueryTimeout(int validationQueryTimeoutSeconds)
Deprecated.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. Use a value less than or equal to 0 for no 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.
- Parameters:
validationQueryTimeoutSeconds
- new validation query timeout value in seconds
-
start
public void start() throws java.sql.SQLException
Starts the datasource.It is not necessary to call this method before using a newly created BasicDataSource instance, but calling it in that context causes the datasource to be immediately initialized (instead of waiting for the first
getConnection()
request). Its primary use is to restart and reinitialize a datasource that has been closed.When this method is called after
close()
, connections checked out by clients before the datasource was stopped do not count ingetMaxTotal()
orgetNumActive()
. For example, if there are 3 connections checked out by clients whenclose()
is invoked and they are not returned beforestart()
is invoked, after this method is called,getNumActive()
will return 0. These connections will be physically closed when they are returned, but they will not count against the maximum allowed in the newly started datasource.- Specified by:
start
in interfaceDataSourceMXBean
- Throws:
java.sql.SQLException
- if an error occurs initializing the datasource
-
startPoolMaintenance
protected void startPoolMaintenance()
Starts the connection pool maintenance task, if configured.
-
unwrap
public <T> T unwrap(java.lang.Class<T> iface) throws java.sql.SQLException
- Specified by:
unwrap
in interfacejava.sql.Wrapper
- Throws:
java.sql.SQLException
-
-