Package org.apache.tomcat.jdbc.pool
Class DataSourceProxy
- java.lang.Object
-
- org.apache.tomcat.jdbc.pool.DataSourceProxy
-
- All Implemented Interfaces:
PoolConfiguration
- Direct Known Subclasses:
DataSource
public class DataSourceProxy extends java.lang.Object implements PoolConfiguration
The DataSource proxy lets us implements methods that don't exist in the current compiler JDK but might be methods that are part of a future JDK DataSource interface.
It's a trick to work around compiler issues when implementing interfaces. For example, I could put in Java 6 methods of javax.sql.DataSource here, and compile it with JDK 1.5 and still be able to run under Java 6 without getting NoSuchMethodException.- Version:
- 1.0
-
-
Field Summary
Fields Modifier and Type Field Description protected ConnectionPoolpoolprotected PoolConfigurationpoolProperties-
Fields inherited from interface org.apache.tomcat.jdbc.pool.PoolConfiguration
PKG_PREFIX
-
-
Constructor Summary
Constructors Constructor Description DataSourceProxy()DataSourceProxy(PoolConfiguration poolProperties)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcheckAbandoned()Forces an abandon check on the connection pool.voidcheckIdle()Forces a check for resizing of the idle connectionsvoidclose()voidclose(boolean all)ConnectionPoolcreatePool()Sets up the connection pool, by creating a pooling driver.intgetAbandonWhenPercentageFull()Connections that have been abandoned (timed out) wont get closed and reported up unless the number of connections in use are above the percentage defined by abandonWhenPercentageFull.intgetActive()longgetBorrowedCount()The total number of connections borrowed from this pool.booleangetCommitOnReturn()java.sql.ConnectiongetConnection()Get a database connection.java.sql.ConnectiongetConnection(java.lang.String username, java.lang.String password)Get a database connection.java.util.concurrent.Future<java.sql.Connection>getConnectionAsync()Invokes an sync operation to retrieve the connection.java.lang.StringgetConnectionProperties()The connection properties that will be sent to the JDBC driver when establishing new connections.longgetCreatedCount()The total number of connections created by this pool.java.lang.ObjectgetDataSource()Returns a datasource, if one exists that is being used to create connections.java.lang.StringgetDataSourceJNDI()Returns the JNDI string configured for data source usage.java.util.PropertiesgetDbProperties()Returns the database properties that are passed into theDriver.connect(String, Properties)method.java.lang.BooleangetDefaultAutoCommit()The default auto-commit state of connections created by this pool.java.lang.StringgetDefaultCatalog()If non null, during connection creation the methodConnection.setCatalog(String)will be called with the set value.java.lang.BooleangetDefaultReadOnly()If non null, during connection creation the methodConnection.setReadOnly(boolean)will be called with the set value.intgetDefaultTransactionIsolation()Returns the default transaction isolation level.java.lang.StringgetDriverClassName()The fully qualified Java class name of the JDBC driver to be used.intgetIdle()If the pool has not been created, it will be created during this call.intgetInitialSize()Returns the number of connections that will be established when the connection pool is started.java.lang.StringgetInitSQL()A custom query to be run when a connection is first created.java.lang.StringgetJdbcInterceptors()A semicolon separated list of classnames extendingJdbcInterceptorclass.PoolProperties.InterceptorDefinition[]getJdbcInterceptorsAsArray()Returns thePoolConfiguration.getJdbcInterceptors()as an array of objects with properties and the classes.intgetLoginTimeout()no-opDataSource.getLoginTimeout()booleangetLogValidationErrors()Returns true if errors that happen during validation will be loggedjava.io.PrintWritergetLogWriter()no-opDataSource.getLogWriter()intgetMaxActive()The maximum number of active connections that can be allocated from this pool at the same time.longgetMaxAge()Time in milliseconds to keep this connection before reconnecting.intgetMaxIdle()The maximum number of connections that should be kept in the idle pool ifPoolConfiguration.isPoolSweeperEnabled()returns false.intgetMaxWait()The maximum number of milliseconds that the pool will wait (when there are no available connections and thePoolConfiguration.getMaxActive()has been reached) for a connection to be returned before throwing an exception.intgetMinEvictableIdleTimeMillis()The minimum amount of time an object must sit idle in the pool before it is eligible for eviction.intgetMinIdle()The minimum number of established connections that should be kept in the pool at all times.java.lang.StringgetName()Returns the name of the connection pool.intgetNumActive()intgetNumIdle()intgetNumTestsPerEvictionRun()Property not usedjava.util.logging.LoggergetParentLogger()no-opCommonDataSource.getParentLogger()java.lang.StringgetPassword()Returns the password used when establishing connections to the database.ConnectionPoolgetPool()javax.sql.PooledConnectiongetPooledConnection()Get a database connection.javax.sql.PooledConnectiongetPooledConnection(java.lang.String username, java.lang.String password)Get a database connection.java.lang.StringgetPoolName()PoolConfigurationgetPoolProperties()intgetPoolSize()booleangetPropagateInterruptState()Returns true if the pool is configured to propagate interrupt state of a thread.longgetReconnectedCount()The total number of connections reconnected by this pool.longgetReleasedCount()The total number of connections released from this pool.longgetReleasedIdleCount()The total number of connections released by eviction.longgetRemoveAbandonedCount()The total number of connections released by remove abandoned.intgetRemoveAbandonedTimeout()The time in seconds before a connection can be considered abandoned.longgetReturnedCount()The total number of connections returned to this pool.booleangetRollbackOnReturn()intgetSize()intgetSuspectTimeout()Returns the time in seconds to pass before a connection is marked an abandoned suspect.intgetTimeBetweenEvictionRunsMillis()The number of milliseconds to sleep between runs of the idle connection validation, abandoned cleaner and idle pool resizing.java.lang.StringgetUrl()The URL used to connect to the databasebooleangetUseDisposableConnectionFacade()Returnstrueif this connection pool is configured to use a connection facade to prevent re-use of connection afterConnection.close()has been invokedbooleangetUseLock()Return true if a lock should be used when operations are performed on the connection object.java.lang.StringgetUsername()Returns the username used to establish the connection withbooleangetUseStatementFacade()Returnstrueif this connection pool is configured to wrap statements in order to enable equals() and hashCode() methods to be called on the closed statements if any statement proxy is set.longgetValidationInterval()avoid excess validation, only run validation at most at this frequency - time in milliseconds.java.lang.StringgetValidationQuery()The SQL query that will be used to validate connections from this pool before returning them to the caller or pool.intgetValidationQueryTimeout()The timeout in seconds before a connection validation queries fail.ValidatorgetValidator()java.lang.StringgetValidatorClassName()Return the name of the optional validator class - may be null.intgetWaitCount()javax.sql.XAConnectiongetXAConnection()Get a database connection.javax.sql.XAConnectiongetXAConnection(java.lang.String username, java.lang.String password)Get a database connection.booleanisAccessToUnderlyingConnectionAllowed()Property not used.booleanisAlternateUsernameAllowed()Returns true if the callgetConnection(username,password)is allowed.java.lang.BooleanisDefaultAutoCommit()The default auto-commit state of connections created by this pool.java.lang.BooleanisDefaultReadOnly()If non null, during connection creation the methodConnection.setReadOnly(boolean)will be called with the set value.booleanisFairQueue()Returnstrueif a fair queue is being used by the connection poolbooleanisIgnoreExceptionOnPreLoad()booleanisJmxEnabled()If set to true, the connection pool creates aConnectionPoolMBeanobject that can be registered with JMX to receive notifications and state about the pool.booleanisLogAbandoned()boolean flag to set if stack traces should be logged for application code which abandoned a Connection.booleanisPoolSweeperEnabled()Returns true if the pool sweeper is enabled for the connection pool.booleanisRemoveAbandoned()boolean flag to remove abandoned connections if they exceed the removeAbandonedTimeout.booleanisTestOnBorrow()The indication of whether objects will be validated before being borrowed from the pool.booleanisTestOnConnect()Returns true if we should run the validation query when connecting to the database for the first time on a connection.booleanisTestOnReturn()The indication of whether objects will be validated after being returned to the pool.booleanisTestWhileIdle()Set to true if query validation should take place while the connection is idle.booleanisUseEquals()Set to true if you wish theProxyConnectionclass to useString.equalsinstead of==when comparing method names.booleanisWrapperFor(java.lang.Class<?> iface)voidpurge()voidpurgeOnReturn()voidresetStats()reset the statistics of this pool.voidsetAbandonWhenPercentageFull(int percentage)Connections that have been abandoned (timed out) wont get closed and reported up unless the number of connections in use are above the percentage defined by abandonWhenPercentageFull.voidsetAccessToUnderlyingConnectionAllowed(boolean accessToUnderlyingConnectionAllowed)No-opvoidsetAlternateUsernameAllowed(boolean alternateUsernameAllowed)Set to true if the callgetConnection(username,password)is allowed and honored..voidsetCommitOnReturn(boolean commitOnReturn)Set to true if you want the connection pool to commit any pending transaction when a connection is returned.voidsetConnectionProperties(java.lang.String properties)The properties that will be passed intoDriver.connect(String, Properties)method.voidsetDataSource(java.lang.Object ds)Injects a datasource that will be used to retrieve/create connections.voidsetDataSourceJNDI(java.lang.String jndiDS)Configure the connection pool to use a DataSource according toPoolConfiguration.setDataSource(Object)But instead of injecting the object, specify the JNDI location.voidsetDbProperties(java.util.Properties dbProperties)Overrides the database properties passed into theDriver.connect(String, Properties)method.voidsetDefaultAutoCommit(java.lang.Boolean autocommit)The default auto-commit state of connections created by this pool.voidsetDefaultCatalog(java.lang.String catalog)If non null, during connection creation the methodConnection.setCatalog(String)will be called with the set value.voidsetDefaultReadOnly(java.lang.Boolean defaultReadOnly)If non null, during connection creation the methodConnection.setReadOnly(boolean)will be called with the set value.voidsetDefaultTransactionIsolation(int defaultTransactionIsolation)If set toDataSourceFactory.UNKNOWN_TRANSACTIONISOLATIONthe methodConnection.setTransactionIsolation(int)will not be called during connection creation.voidsetDriverClassName(java.lang.String driverClassName)The fully qualified Java class name of the JDBC driver to be used.voidsetFairQueue(boolean fairQueue)Set to true if you wish that calls to getConnection should be treated fairly in a true FIFO fashion.voidsetIgnoreExceptionOnPreLoad(boolean ignoreExceptionOnPreLoad)Set to true if you want to ignore error of connection creation while initializing the pool.voidsetInitialSize(int initialSize)Set the number of connections that will be established when the connection pool is started.voidsetInitSQL(java.lang.String initSQL)A custom query to be run when a connection is first created.voidsetJdbcInterceptors(java.lang.String interceptors)A semicolon separated list of classnames extendingJdbcInterceptorclass.voidsetJmxEnabled(boolean enabled)If set to true, the connection pool creates aConnectionPoolMBeanobject that can be registered with JMX to receive notifications and state about the pool.voidsetLogAbandoned(boolean logAbandoned)boolean flag to set if stack traces should be logged for application code which abandoned a Connection.voidsetLoginTimeout(int i)DataSource.setLoginTimeout(int)voidsetLogValidationErrors(boolean logValidationErrors)Set to true if you wish that errors from validation should be logged as error messages.voidsetLogWriter(java.io.PrintWriter out)no-opDataSource.setLogWriter(PrintWriter)voidsetMaxActive(int maxActive)The maximum number of active connections that can be allocated from this pool at the same time.voidsetMaxAge(long maxAge)Time in milliseconds to keep this connection before reconnecting.voidsetMaxIdle(int maxIdle)The maximum number of connections that should be kept in the idle pool ifPoolConfiguration.isPoolSweeperEnabled()returns false.voidsetMaxWait(int maxWait)The maximum number of milliseconds that the pool will wait (when there are no available connections and thePoolConfiguration.getMaxActive()has been reached) for a connection to be returned before throwing an exception.voidsetMinEvictableIdleTimeMillis(int minEvictableIdleTimeMillis)The minimum amount of time an object must sit idle in the pool before it is eligible for eviction.voidsetMinIdle(int minIdle)The minimum number of established connections that should be kept in the pool at all times.voidsetName(java.lang.String name)Sets the name of the connection poolvoidsetNumTestsPerEvictionRun(int numTestsPerEvictionRun)Property not usedvoidsetPassword(java.lang.String password)Sets the password to establish the connection with.voidsetPoolProperties(PoolConfiguration poolProperties)voidsetPropagateInterruptState(boolean propagateInterruptState)Configure the pool to propagate interrupt state for interrupted threads waiting for a connection A thread waiting for a connection, can have its wait interrupted, and by default will clear the interrupt flag and throw aPoolExhaustedExceptionIf set to true, this behavior will change, while thePoolExhaustedExceptionis still thrown, the threads interrupted state is still set.voidsetRemoveAbandoned(boolean removeAbandoned)boolean flag to remove abandoned connections if they exceed the removeAbandonedTimeout.voidsetRemoveAbandonedTimeout(int removeAbandonedTimeout)The time in seconds before a connection can be considered abandoned.voidsetRollbackOnReturn(boolean rollbackOnReturn)Set to true if you want the connection pool to rollback any pending transaction when a connection is returned.voidsetSuspectTimeout(int seconds)Similar toPoolConfiguration.setRemoveAbandonedTimeout(int)but instead of treating the connection as abandoned, and potentially closing the connection, this simply logs the warning ifPoolConfiguration.isLogAbandoned()returns true.voidsetTestOnBorrow(boolean testOnBorrow)The indication of whether objects will be validated before being borrowed from the pool.voidsetTestOnConnect(boolean testOnConnect)Set to true if we should run the validation query when connecting to the database for the first time on a connection.voidsetTestOnReturn(boolean testOnReturn)The indication of whether objects will be validated after being returned to the pool.voidsetTestWhileIdle(boolean testWhileIdle)Set to true if query validation should take place while the connection is idle.voidsetTimeBetweenEvictionRunsMillis(int timeBetweenEvictionRunsMillis)The number of milliseconds to sleep between runs of the idle connection validation, abandoned cleaner and idle pool resizing.voidsetUrl(java.lang.String url)Sets the URL used to connect to the databasevoidsetUseDisposableConnectionFacade(boolean useDisposableConnectionFacade)If set totrue, the connection will be wrapped with facade that will disallow the connection to be used afterConnection.close()is called.voidsetUseEquals(boolean useEquals)Set to true if you wish theProxyConnectionclass to useString.equalsinstead of==when comparing method names.voidsetUseLock(boolean useLock)Set to true if a lock should be used when operations are performed on the connection object.voidsetUsername(java.lang.String username)Sets the username used to establish the connection with It will also be a property called 'user' in the database properties.voidsetUseStatementFacade(boolean useStatementFacade)Set this to true if you wish to wrap statements in order to enable equals() and hashCode() methods to be called on the closed statements if any statement proxy is set.voidsetValidationInterval(long validationInterval)avoid excess validation, only run validation at most at this frequency - time in milliseconds.voidsetValidationQuery(java.lang.String validationQuery)The SQL query that will be used to validate connections from this pool before returning them to the caller or pool.voidsetValidationQueryTimeout(int validationQueryTimeout)The timeout in seconds before a connection validation queries fail.voidsetValidator(Validator validator)Sets the validator object If this is a non null object, it will be used as a validator instead of the validationQuery If this is null, remove the usage of the validator.voidsetValidatorClassName(java.lang.String className)Set the name for an optional validator class which will be used in place of test queries.voidtestIdle()Performs a validation on idle connectionsjava.lang.StringtoString()<T> Tunwrap(java.lang.Class<T> iface)
-
-
-
Field Detail
-
pool
protected volatile ConnectionPool pool
-
poolProperties
protected volatile PoolConfiguration poolProperties
-
-
Constructor Detail
-
DataSourceProxy
public DataSourceProxy()
-
DataSourceProxy
public DataSourceProxy(PoolConfiguration poolProperties)
-
-
Method Detail
-
isWrapperFor
public boolean isWrapperFor(java.lang.Class<?> iface) throws java.sql.SQLException- Throws:
java.sql.SQLException
-
unwrap
public <T> T unwrap(java.lang.Class<T> iface) throws java.sql.SQLException- Throws:
java.sql.SQLException
-
getConnection
public java.sql.Connection getConnection(java.lang.String username, java.lang.String password) throws java.sql.SQLExceptionGet a database connection.DataSource.getConnection()- Parameters:
username- The user namepassword- The password- Returns:
- the connection
- Throws:
java.sql.SQLException- Connection error
-
getPoolProperties
public PoolConfiguration getPoolProperties()
-
createPool
public ConnectionPool createPool() throws java.sql.SQLException
Sets up the connection pool, by creating a pooling driver.- Returns:
- the connection pool
- Throws:
java.sql.SQLException- Error creating pool
-
getConnection
public java.sql.Connection getConnection() throws java.sql.SQLExceptionGet a database connection.DataSource.getConnection()- Returns:
- the connection
- Throws:
java.sql.SQLException- Connection error
-
getConnectionAsync
public java.util.concurrent.Future<java.sql.Connection> getConnectionAsync() throws java.sql.SQLExceptionInvokes an sync operation to retrieve the connection.- Returns:
- a Future containing a reference to the connection when it becomes available
- Throws:
java.sql.SQLException- Connection error
-
getXAConnection
public javax.sql.XAConnection getXAConnection() throws java.sql.SQLExceptionGet a database connection.XADataSource.getXAConnection()- Returns:
- the connection
- Throws:
java.sql.SQLException- Connection error
-
getXAConnection
public javax.sql.XAConnection getXAConnection(java.lang.String username, java.lang.String password) throws java.sql.SQLExceptionGet a database connection.XADataSource.getXAConnection(String, String)- Parameters:
username- The user namepassword- The password- Returns:
- the connection
- Throws:
java.sql.SQLException- Connection error
-
getPooledConnection
public javax.sql.PooledConnection getPooledConnection() throws java.sql.SQLExceptionGet a database connection.DataSource.getConnection()- Returns:
- the connection
- Throws:
java.sql.SQLException- Connection error
-
getPooledConnection
public javax.sql.PooledConnection getPooledConnection(java.lang.String username, java.lang.String password) throws java.sql.SQLExceptionGet a database connection.DataSource.getConnection()- Parameters:
username- unusedpassword- unused- Returns:
- the connection
- Throws:
java.sql.SQLException- Connection error
-
getPool
public ConnectionPool getPool()
-
close
public void close()
-
close
public void close(boolean all)
-
getPoolSize
public int getPoolSize()
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
getPoolName
public java.lang.String getPoolName()
- Specified by:
getPoolNamein interfacePoolConfiguration- Returns:
- the pool name
- See Also:
PoolConfiguration.getName()
-
setPoolProperties
public void setPoolProperties(PoolConfiguration poolProperties)
-
setDriverClassName
public void setDriverClassName(java.lang.String driverClassName)
The fully qualified Java class name of the JDBC driver to be used. The driver has to be accessible from the same classloader as tomcat-jdbc.jar- Specified by:
setDriverClassNamein interfacePoolConfiguration- Parameters:
driverClassName- a fully qualified Java class name of aDriverimplementation.
-
setInitialSize
public void setInitialSize(int initialSize)
Set the number of connections that will be established when the connection pool is started. Default value is 10. If this value exceedsPoolConfiguration.setMaxActive(int)it will automatically be lowered.- Specified by:
setInitialSizein interfacePoolConfiguration- Parameters:
initialSize- the number of connections to be established.
-
setInitSQL
public void setInitSQL(java.lang.String initSQL)
A custom query to be run when a connection is first created. The default value is null. This query only runs once per connection, and that is when a new connection is established to the database. If this value is non null, it will replace the validation query during connection creation.- Specified by:
setInitSQLin interfacePoolConfiguration- Parameters:
initSQL- the init SQL used to run against the DB or null if no query should be executed
-
setLogAbandoned
public void setLogAbandoned(boolean logAbandoned)
boolean flag to set if stack traces should be logged for application code which abandoned a Connection. Logging of abandoned Connections adds overhead for every Connection borrow because a stack trace has to be generated. The default value is false.- Specified by:
setLogAbandonedin interfacePoolConfiguration- Parameters:
logAbandoned- set to true if stack traces should be recorded whengetConnection()is called.
-
setMaxActive
public void setMaxActive(int maxActive)
The maximum number of active connections that can be allocated from this pool at the same time. The default value is 100- Specified by:
setMaxActivein interfacePoolConfiguration- Parameters:
maxActive- hard limit for number of managed connections by this pool
-
setMaxIdle
public void setMaxIdle(int maxIdle)
The maximum number of connections that should be kept in the idle pool ifPoolConfiguration.isPoolSweeperEnabled()returns false. If the IfPoolConfiguration.isPoolSweeperEnabled()returns true, then the idle pool can grow up toPoolConfiguration.getMaxActive()and will be shrunk according toPoolConfiguration.getMinEvictableIdleTimeMillis()setting. Default value is maxActive:100- Specified by:
setMaxIdlein interfacePoolConfiguration- Parameters:
maxIdle- the maximum size of the idle pool
-
setMaxWait
public void setMaxWait(int maxWait)
The maximum number of milliseconds that the pool will wait (when there are no available connections and thePoolConfiguration.getMaxActive()has been reached) for a connection to be returned before throwing an exception. Default value is 30000 (30 seconds)- Specified by:
setMaxWaitin interfacePoolConfiguration- Parameters:
maxWait- the maximum number of milliseconds to wait.
-
setMinEvictableIdleTimeMillis
public void setMinEvictableIdleTimeMillis(int minEvictableIdleTimeMillis)
The minimum amount of time an object must sit idle in the pool before it is eligible for eviction. The default value is 60000 (60 seconds).- Specified by:
setMinEvictableIdleTimeMillisin interfacePoolConfiguration- Parameters:
minEvictableIdleTimeMillis- the number of milliseconds a connection must be idle to be eligible for eviction.
-
setMinIdle
public void setMinIdle(int minIdle)
The minimum number of established connections that should be kept in the pool at all times. The connection pool can shrink below this number if validation queries fail and connections get closed. Default value is derived fromPoolConfiguration.getInitialSize()(also seePoolConfiguration.setTestWhileIdle(boolean)The idle pool will not shrink below this value during an eviction run, hence the number of actual connections can be betweenPoolConfiguration.getMinIdle()and somewhere betweenPoolConfiguration.getMaxIdle()andPoolConfiguration.getMaxActive()- Specified by:
setMinIdlein interfacePoolConfiguration- Parameters:
minIdle- the minimum number of idle or established connections
-
setNumTestsPerEvictionRun
public void setNumTestsPerEvictionRun(int numTestsPerEvictionRun)
Property not used- Specified by:
setNumTestsPerEvictionRunin interfacePoolConfiguration- Parameters:
numTestsPerEvictionRun- parameter ignored.
-
setPassword
public void setPassword(java.lang.String password)
Sets the password to establish the connection with. The password will be included as a database property with the name 'password'.- Specified by:
setPasswordin interfacePoolConfiguration- Parameters:
password- The password- See Also:
PoolConfiguration.getDbProperties()
-
setRemoveAbandoned
public void setRemoveAbandoned(boolean removeAbandoned)
boolean flag to remove abandoned connections if they exceed the removeAbandonedTimeout. If set to true a connection is considered abandoned and eligible for removal if it has been in use longer than thePoolConfiguration.getRemoveAbandonedTimeout()and the condition forPoolConfiguration.getAbandonWhenPercentageFull()is met. Setting this to true can recover db connections from applications that fail to close a connection. See alsoPoolConfiguration.isLogAbandoned()The default value is false.- Specified by:
setRemoveAbandonedin interfacePoolConfiguration- Parameters:
removeAbandoned- set to true if abandoned connections can be closed and expelled out of the pool
-
setRemoveAbandonedTimeout
public void setRemoveAbandonedTimeout(int removeAbandonedTimeout)
The time in seconds before a connection can be considered abandoned. The timer can be reset upon queries using an interceptor.- Specified by:
setRemoveAbandonedTimeoutin interfacePoolConfiguration- Parameters:
removeAbandonedTimeout- the time in seconds before a used connection can be considered abandoned- See Also:
ResetAbandonedTimer
-
setTestOnBorrow
public void setTestOnBorrow(boolean testOnBorrow)
The indication of whether objects will be validated before being borrowed from the pool. If the object fails to validate, it will be dropped from the pool, and we will attempt to borrow another. NOTE - for a true value to have any effect, the validationQuery parameter must be set to a non-null string. Default value is false In order to have a more efficient validation, seePoolConfiguration.setValidationInterval(long)- Specified by:
setTestOnBorrowin interfacePoolConfiguration- Parameters:
testOnBorrow- set to true if validation should take place before a connection is handed out to the application- See Also:
PoolConfiguration.getValidationInterval()
-
setTestOnConnect
public void setTestOnConnect(boolean testOnConnect)
Set to true if we should run the validation query when connecting to the database for the first time on a connection. Normally this is always set to false, unless one wants to use the validationQuery as an init query. Setting anPoolConfiguration.setInitSQL(String)will override this setting, as the init SQL will be used instead of the validation query- Specified by:
setTestOnConnectin interfacePoolConfiguration- Parameters:
testOnConnect- set to true if we should run the validation query upon connect
-
setTestOnReturn
public void setTestOnReturn(boolean testOnReturn)
The indication of whether objects will be validated after being returned to the pool. If the object fails to validate, it will be dropped from the pool. NOTE - for a true value to have any effect, the validationQuery parameter must be set to a non-null string. Default value is false In order to have a more efficient validation, seePoolConfiguration.setValidationInterval(long)- Specified by:
setTestOnReturnin interfacePoolConfiguration- Parameters:
testOnReturn- true if validation should take place after a connection is returned to the pool- See Also:
PoolConfiguration.getValidationInterval()
-
setTestWhileIdle
public void setTestWhileIdle(boolean testWhileIdle)
Set to true if query validation should take place while the connection is idle.- Specified by:
setTestWhileIdlein interfacePoolConfiguration- Parameters:
testWhileIdle- true if validation should take place during idle checks- See Also:
PoolConfiguration.setTimeBetweenEvictionRunsMillis(int)
-
setTimeBetweenEvictionRunsMillis
public void setTimeBetweenEvictionRunsMillis(int timeBetweenEvictionRunsMillis)
The number of milliseconds to sleep between runs of the idle connection validation, abandoned cleaner and idle pool resizing. This value should not be set under 1 second. It dictates how often we check for idle, abandoned connections, and how often we validate idle connection and resize the idle pool. The default value is 5000 (5 seconds)- Specified by:
setTimeBetweenEvictionRunsMillisin interfacePoolConfiguration- Parameters:
timeBetweenEvictionRunsMillis- the sleep time in between validations in milliseconds
-
setUrl
public void setUrl(java.lang.String url)
Sets the URL used to connect to the database- Specified by:
setUrlin interfacePoolConfiguration- Parameters:
url- the configured URL for this connection pool- See Also:
Driver.connect(String, Properties)
-
setUsername
public void setUsername(java.lang.String username)
Sets the username used to establish the connection with It will also be a property called 'user' in the database properties.- Specified by:
setUsernamein interfacePoolConfiguration- Parameters:
username- The user name- See Also:
PoolConfiguration.getDbProperties()
-
setValidationInterval
public void setValidationInterval(long validationInterval)
avoid excess validation, only run validation at most at this frequency - time in milliseconds. If a connection is due for validation, but has been validated previously within this interval, it will not be validated again. The default value is 3000 (3 seconds).- Specified by:
setValidationIntervalin interfacePoolConfiguration- Parameters:
validationInterval- the validation interval in milliseconds
-
setValidationQuery
public void setValidationQuery(java.lang.String validationQuery)
The SQL query that will be used to validate connections from this pool before returning them to the caller or pool. If specified, this query does not have to return any data, it just can't throw an SQLException. The default value is null. Example values are SELECT 1(mysql), select 1 from dual(oracle), SELECT 1(MS Sql Server)- Specified by:
setValidationQueryin interfacePoolConfiguration- Parameters:
validationQuery- the query used for validation or null if no validation is performed
-
setValidatorClassName
public void setValidatorClassName(java.lang.String className)
Set the name for an optional validator class which will be used in place of test queries. If set to null, standard validation will be used.- Specified by:
setValidatorClassNamein interfacePoolConfiguration- Parameters:
className- the name of the optional validator class
-
setValidationQueryTimeout
public void setValidationQueryTimeout(int validationQueryTimeout)
The timeout in seconds before a connection validation queries fail. A value less than or equal to zero will disable this feature. Defaults to -1.- Specified by:
setValidationQueryTimeoutin interfacePoolConfiguration- Parameters:
validationQueryTimeout- The timeout value
-
setJdbcInterceptors
public void setJdbcInterceptors(java.lang.String interceptors)
A semicolon separated list of classnames extendingJdbcInterceptorclass. These interceptors will be inserted as an interceptor into the chain of operations on a java.sql.Connection object. Example interceptors areStatementFinalizerto close all used statements during the session.ResetAbandonedTimerresets the timer upon every operation on the connection or a statement.ConnectionStatecaches the auto commit, read only and catalog settings to avoid round trips to the DB. The default value is null.- Specified by:
setJdbcInterceptorsin interfacePoolConfiguration- Parameters:
interceptors- the interceptors that are used for connections. Example format: 'ConnectionState(useEquals=true,fast=yes);ResetAbandonedTimer'
-
setJmxEnabled
public void setJmxEnabled(boolean enabled)
If set to true, the connection pool creates aConnectionPoolMBeanobject that can be registered with JMX to receive notifications and state about the pool. The ConnectionPool object doesn't register itself, as there is no way to keep a static non changing ObjectName across JVM restarts.- Specified by:
setJmxEnabledin interfacePoolConfiguration- Parameters:
enabled- set to to if the mbean object should be created upon startup.
-
setFairQueue
public void setFairQueue(boolean fairQueue)
Set to true if you wish that calls to getConnection should be treated fairly in a true FIFO fashion. This uses theFairBlockingQueueimplementation for the list of the idle connections. The default value is true. This flag is required when you want to use asynchronous connection retrieval.- Specified by:
setFairQueuein interfacePoolConfiguration- Parameters:
fairQueue-trueto use a fair queue
-
setUseLock
public void setUseLock(boolean useLock)
Set to true if a lock should be used when operations are performed on the connection object. Should be set to false unless you plan to have a background thread of your own doing idle and abandon checking such as JMX clients. If the pool sweeper is enabled, then the lock will automatically be used regardless of this setting.- Specified by:
setUseLockin interfacePoolConfiguration- Parameters:
useLock- set to true if a lock should be used on connection operations
-
setDefaultCatalog
public void setDefaultCatalog(java.lang.String catalog)
If non null, during connection creation the methodConnection.setCatalog(String)will be called with the set value.- Specified by:
setDefaultCatalogin interfacePoolConfiguration- Parameters:
catalog- null if not set and accepting the driver default.
-
setDefaultAutoCommit
public void setDefaultAutoCommit(java.lang.Boolean autocommit)
The default auto-commit state of connections created by this pool. If not set (null), default is JDBC driver default (If set to null then theConnection.setAutoCommit(boolean)method will not be called.)- Specified by:
setDefaultAutoCommitin interfacePoolConfiguration- Parameters:
autocommit- default auto commit setting, null is Driver default.
-
setDefaultTransactionIsolation
public void setDefaultTransactionIsolation(int defaultTransactionIsolation)
If set toDataSourceFactory.UNKNOWN_TRANSACTIONISOLATIONthe methodConnection.setTransactionIsolation(int)will not be called during connection creation. Otherwise the method will be called with the isolation level set by this property.- Specified by:
setDefaultTransactionIsolationin interfacePoolConfiguration- Parameters:
defaultTransactionIsolation- a value ofConnection.TRANSACTION_NONE,Connection.TRANSACTION_READ_COMMITTED,Connection.TRANSACTION_READ_UNCOMMITTED,Connection.TRANSACTION_REPEATABLE_READ,Connection.TRANSACTION_SERIALIZABLEorDataSourceFactory.UNKNOWN_TRANSACTIONISOLATIONThe last value will not be set on the connection.
-
setConnectionProperties
public void setConnectionProperties(java.lang.String properties)
The properties that will be passed intoDriver.connect(String, Properties)method. Username and password do not need to be stored here, they will be passed into the properties right before the connection is established.- Specified by:
setConnectionPropertiesin interfacePoolConfiguration- Parameters:
properties- properties - Format of the string is [propertyName=property;]* Example: prop1=value1;prop2=value2
-
setUseEquals
public void setUseEquals(boolean useEquals)
Set to true if you wish theProxyConnectionclass to useString.equalsinstead of==when comparing method names. This property does not apply to added interceptors as those are configured individually. The default value isfalse.- Specified by:
setUseEqualsin interfacePoolConfiguration- Parameters:
useEquals- set to true if the pool should useString.equals(Object)instead of == when comparing method names onConnectionmethods
-
getParentLogger
public java.util.logging.Logger getParentLogger() throws java.sql.SQLFeatureNotSupportedExceptionno-opCommonDataSource.getParentLogger()- Returns:
- no return value
- Throws:
java.sql.SQLFeatureNotSupportedException- Unsupported
-
getLogWriter
public java.io.PrintWriter getLogWriter() throws java.sql.SQLExceptionno-opDataSource.getLogWriter()- Returns:
- null
- Throws:
java.sql.SQLException- No exception
-
setLogWriter
public void setLogWriter(java.io.PrintWriter out) throws java.sql.SQLExceptionno-opDataSource.setLogWriter(PrintWriter)- Parameters:
out- Ignored- Throws:
java.sql.SQLException- No exception
-
getLoginTimeout
public int getLoginTimeout()
no-opDataSource.getLoginTimeout()- Returns:
- the timeout
-
setLoginTimeout
public void setLoginTimeout(int i)
DataSource.setLoginTimeout(int)- Parameters:
i- The timeout value
-
getSuspectTimeout
public int getSuspectTimeout()
Returns the time in seconds to pass before a connection is marked an abandoned suspect. Any value lesser than or equal to 0 means the check is disabled.- Specified by:
getSuspectTimeoutin interfacePoolConfiguration- Returns:
- Returns the time in seconds to pass before a connection is marked an abandoned suspect.
-
setSuspectTimeout
public void setSuspectTimeout(int seconds)
Similar toPoolConfiguration.setRemoveAbandonedTimeout(int)but instead of treating the connection as abandoned, and potentially closing the connection, this simply logs the warning ifPoolConfiguration.isLogAbandoned()returns true. If this value is equal or less than 0, no suspect checking will be performed. Suspect checking only takes place if the timeout value is larger than 0 and the connection was not abandoned or if abandon check is disabled. If a connection is suspect a WARN message gets logged and a JMX notification gets sent once.- Specified by:
setSuspectTimeoutin interfacePoolConfiguration- Parameters:
seconds- - the amount of time in seconds that has to pass before a connection is marked suspect.
-
getIdle
public int getIdle()
If the pool has not been created, it will be created during this call.- Returns:
- the number of established but idle connections
-
getNumIdle
public int getNumIdle()
- Returns:
- the number of established but idle connections
-
checkAbandoned
public void checkAbandoned()
Forces an abandon check on the connection pool. If connections that have been abandoned exists, they will be closed during this run
-
checkIdle
public void checkIdle()
Forces a check for resizing of the idle connections
-
getActive
public int getActive()
- Returns:
- number of connections in use by the application
-
getNumActive
public int getNumActive()
- Returns:
- number of connections in use by the application
getActive()
-
getWaitCount
public int getWaitCount()
- Returns:
- number of threads waiting for a connection
-
getSize
public int getSize()
- Returns:
- the current size of the pool
-
testIdle
public void testIdle()
Performs a validation on idle connections
-
getBorrowedCount
public long getBorrowedCount()
The total number of connections borrowed from this pool.- Returns:
- the borrowed connection count
-
getReturnedCount
public long getReturnedCount()
The total number of connections returned to this pool.- Returns:
- the returned connection count
-
getCreatedCount
public long getCreatedCount()
The total number of connections created by this pool.- Returns:
- the created connection count
-
getReleasedCount
public long getReleasedCount()
The total number of connections released from this pool.- Returns:
- the released connection count
-
getReconnectedCount
public long getReconnectedCount()
The total number of connections reconnected by this pool.- Returns:
- the reconnected connection count
-
getRemoveAbandonedCount
public long getRemoveAbandonedCount()
The total number of connections released by remove abandoned.- Returns:
- the PoolCleaner removed abandoned connection count
-
getReleasedIdleCount
public long getReleasedIdleCount()
The total number of connections released by eviction.- Returns:
- the PoolCleaner evicted idle connection count
-
resetStats
public void resetStats()
reset the statistics of this pool.
-
getConnectionProperties
public java.lang.String getConnectionProperties()
The connection properties that will be sent to the JDBC driver when establishing new connections. Format of the string is [propertyName=property;]
NOTE - The "user" and "password" properties will be passed explicitly, so they do not need to be included here. The default value is null.- Specified by:
getConnectionPropertiesin interfacePoolConfiguration- Returns:
- the connection properties
-
getDbProperties
public java.util.Properties getDbProperties()
Returns the database properties that are passed into theDriver.connect(String, Properties)method.- Specified by:
getDbPropertiesin interfacePoolConfiguration- Returns:
- database properties that are passed into the
Driver.connect(String, Properties)method.
-
getDefaultCatalog
public java.lang.String getDefaultCatalog()
If non null, during connection creation the methodConnection.setCatalog(String)will be called with the set value.- Specified by:
getDefaultCatalogin interfacePoolConfiguration- Returns:
- the default catalog, null if not set and accepting the driver default.
-
getDefaultTransactionIsolation
public int getDefaultTransactionIsolation()
Returns the default transaction isolation level. If set toDataSourceFactory.UNKNOWN_TRANSACTIONISOLATIONthe methodConnection.setTransactionIsolation(int)will not be called during connection creation.- Specified by:
getDefaultTransactionIsolationin interfacePoolConfiguration- Returns:
- driver transaction isolation level, or -1
DataSourceFactory.UNKNOWN_TRANSACTIONISOLATIONif not set.
-
getDriverClassName
public java.lang.String getDriverClassName()
The fully qualified Java class name of the JDBC driver to be used. The driver has to be accessible from the same classloader as tomcat-jdbc.jar- Specified by:
getDriverClassNamein interfacePoolConfiguration- Returns:
- fully qualified JDBC driver name.
-
getInitialSize
public int getInitialSize()
Returns the number of connections that will be established when the connection pool is started. Default value is 10- Specified by:
getInitialSizein interfacePoolConfiguration- Returns:
- number of connections to be started when pool is started
-
getInitSQL
public java.lang.String getInitSQL()
A custom query to be run when a connection is first created. The default value is null. This query only runs once per connection, and that is when a new connection is established to the database. If this value is non null, it will replace the validation query during connection creation.- Specified by:
getInitSQLin interfacePoolConfiguration- Returns:
- the init SQL used to run against the DB or null if not set
-
getJdbcInterceptors
public java.lang.String getJdbcInterceptors()
A semicolon separated list of classnames extendingJdbcInterceptorclass. These interceptors will be inserted as an interceptor into the chain of operations on a java.sql.Connection object. Example interceptors areStatementFinalizerto close all used statements during the session.ResetAbandonedTimerresets the timer upon every operation on the connection or a statement.ConnectionStatecaches the auto commit, read only and catalog settings to avoid round trips to the DB. The default value is null.- Specified by:
getJdbcInterceptorsin interfacePoolConfiguration- Returns:
- the interceptors that are used for connections. Example format: 'ConnectionState(useEquals=true,fast=yes);ResetAbandonedTimer'
-
getMaxActive
public int getMaxActive()
The maximum number of active connections that can be allocated from this pool at the same time. The default value is 100- Specified by:
getMaxActivein interfacePoolConfiguration- Returns:
- the maximum number of connections used by this pool
-
getMaxIdle
public int getMaxIdle()
The maximum number of connections that should be kept in the idle pool ifPoolConfiguration.isPoolSweeperEnabled()returns false. If the IfPoolConfiguration.isPoolSweeperEnabled()returns true, then the idle pool can grow up toPoolConfiguration.getMaxActive()and will be shrunk according toPoolConfiguration.getMinEvictableIdleTimeMillis()setting. Default value is maxActive:100- Specified by:
getMaxIdlein interfacePoolConfiguration- Returns:
- the maximum number of idle connections.
-
getMaxWait
public int getMaxWait()
The maximum number of milliseconds that the pool will wait (when there are no available connections and thePoolConfiguration.getMaxActive()has been reached) for a connection to be returned before throwing an exception. Default value is 30000 (30 seconds)- Specified by:
getMaxWaitin interfacePoolConfiguration- Returns:
- the number of milliseconds to wait for a connection to become available if the pool is maxed out.
-
getMinEvictableIdleTimeMillis
public int getMinEvictableIdleTimeMillis()
The minimum amount of time an object must sit idle in the pool before it is eligible for eviction. The default value is 60000 (60 seconds).- Specified by:
getMinEvictableIdleTimeMillisin interfacePoolConfiguration- Returns:
- the minimum amount of idle time in milliseconds before a connection is considered idle and eligible for eviction.
-
getMinIdle
public int getMinIdle()
The minimum number of established connections that should be kept in the pool at all times. The connection pool can shrink below this number if validation queries fail and connections get closed. Default value is derived fromPoolConfiguration.getInitialSize()(also seePoolConfiguration.setTestWhileIdle(boolean)The idle pool will not shrink below this value during an eviction run, hence the number of actual connections can be betweenPoolConfiguration.getMinIdle()and somewhere betweenPoolConfiguration.getMaxIdle()andPoolConfiguration.getMaxActive()- Specified by:
getMinIdlein interfacePoolConfiguration- Returns:
- the minimum number of idle or established connections
-
getMaxAge
public long getMaxAge()
Time in milliseconds to keep this connection before reconnecting. When a connection is idle, returned to the pool or borrowed from the pool, the pool will check to see if the ((now - time-when-connected) > maxAge) has been reached, and if so, it reconnects. Note that the age of idle connections will only be checked ifPoolConfiguration.getTimeBetweenEvictionRunsMillis()returns a value greater than 0. The default value is 0, which implies that connections will be left open and no age checks will be done. This is a useful setting for database sessions that leak memory as it ensures that the session will have a finite life span.- Specified by:
getMaxAgein interfacePoolConfiguration- Returns:
- the time in milliseconds a connection will be open for when used
-
getName
public java.lang.String getName()
Returns the name of the connection pool. By default a JVM unique random name is assigned.- Specified by:
getNamein interfacePoolConfiguration- Returns:
- the name of the pool, should be unique in a JVM
-
getNumTestsPerEvictionRun
public int getNumTestsPerEvictionRun()
Property not used- Specified by:
getNumTestsPerEvictionRunin interfacePoolConfiguration- Returns:
- unknown value
-
getPassword
public java.lang.String getPassword()
Description copied from interface:PoolConfigurationReturns the password used when establishing connections to the database.- Specified by:
getPasswordin interfacePoolConfiguration- Returns:
- DOES NOT RETURN THE PASSWORD, IT WOULD SHOW UP IN JMX
-
getRemoveAbandonedTimeout
public int getRemoveAbandonedTimeout()
The time in seconds before a connection can be considered abandoned. The timer can be reset upon queries using an interceptor.- Specified by:
getRemoveAbandonedTimeoutin interfacePoolConfiguration- Returns:
- the time in seconds before a used connection can be considered abandoned
- See Also:
ResetAbandonedTimer
-
getTimeBetweenEvictionRunsMillis
public int getTimeBetweenEvictionRunsMillis()
The number of milliseconds to sleep between runs of the idle connection validation, abandoned cleaner and idle pool resizing. This value should not be set under 1 second. It dictates how often we check for idle, abandoned connections, and how often we validate idle connection and resize the idle pool. The default value is 5000 (5 seconds)- Specified by:
getTimeBetweenEvictionRunsMillisin interfacePoolConfiguration- Returns:
- the sleep time in between validations in milliseconds
-
getUrl
public java.lang.String getUrl()
The URL used to connect to the database- Specified by:
getUrlin interfacePoolConfiguration- Returns:
- the configured URL for this connection pool
- See Also:
Driver.connect(String, Properties)
-
getUsername
public java.lang.String getUsername()
Returns the username used to establish the connection with- Specified by:
getUsernamein interfacePoolConfiguration- Returns:
- the username used to establish the connection with
-
getValidationInterval
public long getValidationInterval()
avoid excess validation, only run validation at most at this frequency - time in milliseconds. If a connection is due for validation, but has been validated previously within this interval, it will not be validated again. The default value is 3000 (3 seconds).- Specified by:
getValidationIntervalin interfacePoolConfiguration- Returns:
- the validation interval in milliseconds
-
getValidationQuery
public java.lang.String getValidationQuery()
The SQL query that will be used to validate connections from this pool before returning them to the caller or pool. If specified, this query does not have to return any data, it just can't throw an SQLException. The default value is null. Example values are SELECT 1(mysql), select 1 from dual(oracle), SELECT 1(MS Sql Server)- Specified by:
getValidationQueryin interfacePoolConfiguration- Returns:
- the query used for validation or null if no validation is performed
-
getValidationQueryTimeout
public int getValidationQueryTimeout()
The timeout in seconds before a connection validation queries fail. A value less than or equal to zero will disable this feature. Defaults to -1.- Specified by:
getValidationQueryTimeoutin interfacePoolConfiguration- Returns:
- the timeout value in seconds
-
getValidatorClassName
public java.lang.String getValidatorClassName()
Return the name of the optional validator class - may be null.- Specified by:
getValidatorClassNamein interfacePoolConfiguration- Returns:
- the name of the optional validator class - may be null
-
getValidator
public Validator getValidator()
- Specified by:
getValidatorin interfacePoolConfiguration- Returns:
- the optional validator object - may be null
-
setValidator
public void setValidator(Validator validator)
Sets the validator object If this is a non null object, it will be used as a validator instead of the validationQuery If this is null, remove the usage of the validator.- Specified by:
setValidatorin interfacePoolConfiguration- Parameters:
validator- The validator object
-
isAccessToUnderlyingConnectionAllowed
public boolean isAccessToUnderlyingConnectionAllowed()
Property not used. Access is always allowed. Access can be achieved by calling unwrap on the pooled connection. seeDataSourceinterface or call getConnection through reflection or cast the object asPooledConnection- Specified by:
isAccessToUnderlyingConnectionAllowedin interfacePoolConfiguration- Returns:
true
-
isDefaultAutoCommit
public java.lang.Boolean isDefaultAutoCommit()
The default auto-commit state of connections created by this pool. If not set (null), default is JDBC driver default (If set to null then theConnection.setAutoCommit(boolean)method will not be called.)- Specified by:
isDefaultAutoCommitin interfacePoolConfiguration- Returns:
- the default auto commit setting, null is Driver default.
-
isDefaultReadOnly
public java.lang.Boolean isDefaultReadOnly()
If non null, during connection creation the methodConnection.setReadOnly(boolean)will be called with the set value.- Specified by:
isDefaultReadOnlyin interfacePoolConfiguration- Returns:
- null if not set and accepting the driver default otherwise the read only value
-
isLogAbandoned
public boolean isLogAbandoned()
boolean flag to set if stack traces should be logged for application code which abandoned a Connection. Logging of abandoned Connections adds overhead for every Connection borrow because a stack trace has to be generated. The default value is false.- Specified by:
isLogAbandonedin interfacePoolConfiguration- Returns:
- true if the connection pool logs stack traces when connections are borrowed from the pool.
-
isPoolSweeperEnabled
public boolean isPoolSweeperEnabled()
Returns true if the pool sweeper is enabled for the connection pool. The pool sweeper is enabled if any settings that require async intervention in the pool are turned onboolean result = getTimeBetweenEvictionRunsMillis()>0; result = result && (isRemoveAbandoned() && getRemoveAbandonedTimeout()>0); result = result || (isTestWhileIdle() && getValidationQuery()!=null); return result;- Specified by:
isPoolSweeperEnabledin interfacePoolConfiguration- Returns:
- true if a background thread is or will be enabled for this pool
-
isRemoveAbandoned
public boolean isRemoveAbandoned()
boolean flag to remove abandoned connections if they exceed the removeAbandonedTimeout. If set to true a connection is considered abandoned and eligible for removal if it has been in use longer than thePoolConfiguration.getRemoveAbandonedTimeout()and the condition forPoolConfiguration.getAbandonWhenPercentageFull()is met. Setting this to true can recover db connections from applications that fail to close a connection. See alsoPoolConfiguration.isLogAbandoned()The default value is false.- Specified by:
isRemoveAbandonedin interfacePoolConfiguration- Returns:
- true if abandoned connections can be closed and expelled out of the pool
-
getAbandonWhenPercentageFull
public int getAbandonWhenPercentageFull()
Connections that have been abandoned (timed out) wont get closed and reported up unless the number of connections in use are above the percentage defined by abandonWhenPercentageFull. The value should be between 0-100. The default value is 0, which implies that connections are eligible for closure as soon as removeAbandonedTimeout has been reached.- Specified by:
getAbandonWhenPercentageFullin interfacePoolConfiguration- Returns:
- percentage - a value between 0 and 100 to indicate when connections that have been abandoned/timed out are considered abandoned
-
isTestOnBorrow
public boolean isTestOnBorrow()
The indication of whether objects will be validated before being borrowed from the pool. If the object fails to validate, it will be dropped from the pool, and we will attempt to borrow another. NOTE - for a true value to have any effect, the validationQuery parameter must be set to a non-null string. Default value is false In order to have a more efficient validation, seePoolConfiguration.setValidationInterval(long)- Specified by:
isTestOnBorrowin interfacePoolConfiguration- Returns:
- true if the connection is to be validated upon borrowing a connection from the pool
- See Also:
PoolConfiguration.getValidationInterval()
-
isTestOnConnect
public boolean isTestOnConnect()
Returns true if we should run the validation query when connecting to the database for the first time on a connection. Normally this is always set to false, unless one wants to use the validationQuery as an init query.- Specified by:
isTestOnConnectin interfacePoolConfiguration- Returns:
- true if we should run the validation query upon connect
-
isTestOnReturn
public boolean isTestOnReturn()
The indication of whether objects will be validated after being returned to the pool. If the object fails to validate, it will be dropped from the pool. NOTE - for a true value to have any effect, the validationQuery parameter must be set to a non-null string. Default value is false In order to have a more efficient validation, seePoolConfiguration.setValidationInterval(long)- Specified by:
isTestOnReturnin interfacePoolConfiguration- Returns:
- true if validation should take place after a connection is returned to the pool
- See Also:
PoolConfiguration.getValidationInterval()
-
isTestWhileIdle
public boolean isTestWhileIdle()
Set to true if query validation should take place while the connection is idle.- Specified by:
isTestWhileIdlein interfacePoolConfiguration- Returns:
- true if validation should take place during idle checks
- See Also:
PoolConfiguration.setTimeBetweenEvictionRunsMillis(int)
-
getDefaultAutoCommit
public java.lang.Boolean getDefaultAutoCommit()
The default auto-commit state of connections created by this pool. If not set (null), default is JDBC driver default (If set to null then theConnection.setAutoCommit(boolean)method will not be called.)- Specified by:
getDefaultAutoCommitin interfacePoolConfiguration- Returns:
- the default auto commit setting, null is Driver default.
-
getDefaultReadOnly
public java.lang.Boolean getDefaultReadOnly()
If non null, during connection creation the methodConnection.setReadOnly(boolean)will be called with the set value.- Specified by:
getDefaultReadOnlyin interfacePoolConfiguration- Returns:
- null if not set and accepting the driver default otherwise the read only value
-
getJdbcInterceptorsAsArray
public PoolProperties.InterceptorDefinition[] getJdbcInterceptorsAsArray()
Returns thePoolConfiguration.getJdbcInterceptors()as an array of objects with properties and the classes.- Specified by:
getJdbcInterceptorsAsArrayin interfacePoolConfiguration- Returns:
- an array of interceptors that have been configured
-
getUseLock
public boolean getUseLock()
Return true if a lock should be used when operations are performed on the connection object. Should be set to false unless you plan to have a background thread of your own doing idle and abandon checking such as JMX clients. If the pool sweeper is enabled, then the lock will automatically be used regardless of this setting.- Specified by:
getUseLockin interfacePoolConfiguration- Returns:
- true if a lock is used.
-
isFairQueue
public boolean isFairQueue()
Returnstrueif a fair queue is being used by the connection pool- Specified by:
isFairQueuein interfacePoolConfiguration- Returns:
trueif a fair waiting queue is being used
-
isJmxEnabled
public boolean isJmxEnabled()
If set to true, the connection pool creates aConnectionPoolMBeanobject that can be registered with JMX to receive notifications and state about the pool. The ConnectionPool object doesn't register itself, as there is no way to keep a static non changing ObjectName across JVM restarts.- Specified by:
isJmxEnabledin interfacePoolConfiguration- Returns:
- true if the mbean object will be created upon startup.
-
isUseEquals
public boolean isUseEquals()
Set to true if you wish theProxyConnectionclass to useString.equalsinstead of==when comparing method names. This property does not apply to added interceptors as those are configured individually. The default value isfalse.- Specified by:
isUseEqualsin interfacePoolConfiguration- Returns:
- true if pool uses
String.equals(Object)instead of == when comparing method names onConnectionmethods
-
setAbandonWhenPercentageFull
public void setAbandonWhenPercentageFull(int percentage)
Connections that have been abandoned (timed out) wont get closed and reported up unless the number of connections in use are above the percentage defined by abandonWhenPercentageFull. The value should be between 0-100. The default value is 0, which implies that connections are eligible for closure as soon as removeAbandonedTimeout has been reached.- Specified by:
setAbandonWhenPercentageFullin interfacePoolConfiguration- Parameters:
percentage- a value between 0 and 100 to indicate when connections that have been abandoned/timed out are considered abandoned
-
setAccessToUnderlyingConnectionAllowed
public void setAccessToUnderlyingConnectionAllowed(boolean accessToUnderlyingConnectionAllowed)
No-op- Specified by:
setAccessToUnderlyingConnectionAllowedin interfacePoolConfiguration- Parameters:
accessToUnderlyingConnectionAllowed- parameter ignored
-
setDbProperties
public void setDbProperties(java.util.Properties dbProperties)
Overrides the database properties passed into theDriver.connect(String, Properties)method.- Specified by:
setDbPropertiesin interfacePoolConfiguration- Parameters:
dbProperties- The database properties
-
setDefaultReadOnly
public void setDefaultReadOnly(java.lang.Boolean defaultReadOnly)
If non null, during connection creation the methodConnection.setReadOnly(boolean)will be called with the set value.- Specified by:
setDefaultReadOnlyin interfacePoolConfiguration- Parameters:
defaultReadOnly- null if not set and accepting the driver default.
-
setMaxAge
public void setMaxAge(long maxAge)
Time in milliseconds to keep this connection before reconnecting. When a connection is idle, returned to the pool or borrowed from the pool, the pool will check to see if the ((now - time-when-connected) > maxAge) has been reached, and if so, it reconnects. Note that the age of idle connections will only be checked ifPoolConfiguration.getTimeBetweenEvictionRunsMillis()returns a value greater than 0. The default value is 0, which implies that connections will be left open and no age checks will be done. This is a useful setting for database sessions that leak memory as it ensures that the session will have a finite life span.- Specified by:
setMaxAgein interfacePoolConfiguration- Parameters:
maxAge- the time in milliseconds a connection will be open for when used
-
setName
public void setName(java.lang.String name)
Sets the name of the connection pool- Specified by:
setNamein interfacePoolConfiguration- Parameters:
name- the name of the pool, should be unique in a runtime JVM
-
setDataSource
public void setDataSource(java.lang.Object ds)
Injects a datasource that will be used to retrieve/create connections. If a data source is set, thePoolConfiguration.getUrl()andPoolConfiguration.getDriverClassName()methods are ignored and not used by the pool. If thePoolConfiguration.getUsername()andPoolConfiguration.getPassword()values are set, the methodDataSource.getConnection(String, String)method will be called instead of theDataSource.getConnection()method. If the data source implementsXADataSourcethe methodsXADataSource.getXAConnection()andXADataSource.getXAConnection(String,String)will be invoked.- Specified by:
setDataSourcein interfacePoolConfiguration- Parameters:
ds- theDataSourceto be used for creating connections to be pooled.
-
getDataSource
public java.lang.Object getDataSource()
Returns a datasource, if one exists that is being used to create connections. This method will return null if the pool is using aDriver- Specified by:
getDataSourcein interfacePoolConfiguration- Returns:
- the
DataSourceto be used for creating connections to be pooled or null if a Driver is used.
-
setDataSourceJNDI
public void setDataSourceJNDI(java.lang.String jndiDS)
Configure the connection pool to use a DataSource according toPoolConfiguration.setDataSource(Object)But instead of injecting the object, specify the JNDI location. After a successful JNDI look, thePoolConfiguration.getDataSource()will not return null.- Specified by:
setDataSourceJNDIin interfacePoolConfiguration- Parameters:
jndiDS- -the JNDI string @TODO specify the rules here.
-
getDataSourceJNDI
public java.lang.String getDataSourceJNDI()
Returns the JNDI string configured for data source usage.- Specified by:
getDataSourceJNDIin interfacePoolConfiguration- Returns:
- the JNDI string or null if not set
-
isAlternateUsernameAllowed
public boolean isAlternateUsernameAllowed()
Returns true if the callgetConnection(username,password)is allowed. This is used for when the pool is used by an application accessing multiple schemas. There is a performance impact turning this option on.- Specified by:
isAlternateUsernameAllowedin interfacePoolConfiguration- Returns:
- true if
getConnection(username,password)is honored, false if it is ignored.
-
setAlternateUsernameAllowed
public void setAlternateUsernameAllowed(boolean alternateUsernameAllowed)
Set to true if the callgetConnection(username,password)is allowed and honored.. This is used for when the pool is used by an application accessing multiple schemas. There is a performance impact turning this option on, even when not used due to username checks.- Specified by:
setAlternateUsernameAllowedin interfacePoolConfiguration- Parameters:
alternateUsernameAllowed- - set true ifgetConnection(username,password)is honored, false if it is to be ignored.
-
setCommitOnReturn
public void setCommitOnReturn(boolean commitOnReturn)
Set to true if you want the connection pool to commit any pending transaction when a connection is returned. The default value is false, as this could result in committing data. This parameter is only looked at if thePoolConfiguration.getDefaultAutoCommit()returns false- Specified by:
setCommitOnReturnin interfacePoolConfiguration- Parameters:
commitOnReturn- set to true if the pool should callConnection.commit()when a connection is returned to the pool. Default is false
-
getCommitOnReturn
public boolean getCommitOnReturn()
- Specified by:
getCommitOnReturnin interfacePoolConfiguration- Returns:
trueif the pool should commit when a connection is returned to it- See Also:
PoolConfiguration.setCommitOnReturn(boolean)
-
setRollbackOnReturn
public void setRollbackOnReturn(boolean rollbackOnReturn)
Set to true if you want the connection pool to rollback any pending transaction when a connection is returned. The default value is false, as this could result in committing data. This parameter is only looked at if thePoolConfiguration.getDefaultAutoCommit()returns false- Specified by:
setRollbackOnReturnin interfacePoolConfiguration- Parameters:
rollbackOnReturn- set to true if the pool should callConnection.rollback()when a connection is returned to the pool. Default is false
-
getRollbackOnReturn
public boolean getRollbackOnReturn()
- Specified by:
getRollbackOnReturnin interfacePoolConfiguration- Returns:
trueif the pool should rollback when a connection is returned to it- See Also:
PoolConfiguration.setRollbackOnReturn(boolean)
-
setUseDisposableConnectionFacade
public void setUseDisposableConnectionFacade(boolean useDisposableConnectionFacade)
If set totrue, the connection will be wrapped with facade that will disallow the connection to be used afterConnection.close()is called. If set totrue, afterConnection.close()all calls exceptConnection.close()andConnection.isClosed()will throw an exception.- Specified by:
setUseDisposableConnectionFacadein interfacePoolConfiguration- Parameters:
useDisposableConnectionFacade-trueto use a facade
-
getUseDisposableConnectionFacade
public boolean getUseDisposableConnectionFacade()
Returnstrueif this connection pool is configured to use a connection facade to prevent re-use of connection afterConnection.close()has been invoked- Specified by:
getUseDisposableConnectionFacadein interfacePoolConfiguration- Returns:
trueifConnection.close()has been invoked.
-
setLogValidationErrors
public void setLogValidationErrors(boolean logValidationErrors)
Set to true if you wish that errors from validation should be logged as error messages.- Specified by:
setLogValidationErrorsin interfacePoolConfiguration- Parameters:
logValidationErrors- set to true to log validation errors
-
getLogValidationErrors
public boolean getLogValidationErrors()
Returns true if errors that happen during validation will be logged- Specified by:
getLogValidationErrorsin interfacePoolConfiguration- Returns:
- true if errors that happen during validation will be logged
-
getPropagateInterruptState
public boolean getPropagateInterruptState()
Returns true if the pool is configured to propagate interrupt state of a thread. A thread waiting for a connection, can have its wait interrupted, and by default will clear the interrupt flag and throw aPoolExhaustedException- Specified by:
getPropagateInterruptStatein interfacePoolConfiguration- Returns:
- true if the pool is configured to propagate and not clear the thread interrupt state
-
setPropagateInterruptState
public void setPropagateInterruptState(boolean propagateInterruptState)
Configure the pool to propagate interrupt state for interrupted threads waiting for a connection A thread waiting for a connection, can have its wait interrupted, and by default will clear the interrupt flag and throw aPoolExhaustedExceptionIf set to true, this behavior will change, while thePoolExhaustedExceptionis still thrown, the threads interrupted state is still set.- Specified by:
setPropagateInterruptStatein interfacePoolConfiguration- Parameters:
propagateInterruptState- - set to true to not clear, but propagate, a threads interrupted state.
-
isIgnoreExceptionOnPreLoad
public boolean isIgnoreExceptionOnPreLoad()
- Specified by:
isIgnoreExceptionOnPreLoadin interfacePoolConfiguration- Returns:
trueto ignore exceptions- See Also:
PoolConfiguration.setIgnoreExceptionOnPreLoad(boolean)
-
setIgnoreExceptionOnPreLoad
public void setIgnoreExceptionOnPreLoad(boolean ignoreExceptionOnPreLoad)
Set to true if you want to ignore error of connection creation while initializing the pool. Set to false if you want to fail the initialization of the pool by throwing exception.- Specified by:
setIgnoreExceptionOnPreLoadin interfacePoolConfiguration- Parameters:
ignoreExceptionOnPreLoad- set to true if you want to ignore error of connection creation while initializing the pool.
-
getUseStatementFacade
public boolean getUseStatementFacade()
Returnstrueif this connection pool is configured to wrap statements in order to enable equals() and hashCode() methods to be called on the closed statements if any statement proxy is set.- Specified by:
getUseStatementFacadein interfacePoolConfiguration- Returns:
trueif the statements are wrapped
-
setUseStatementFacade
public void setUseStatementFacade(boolean useStatementFacade)
Set this to true if you wish to wrap statements in order to enable equals() and hashCode() methods to be called on the closed statements if any statement proxy is set.- Specified by:
setUseStatementFacadein interfacePoolConfiguration- Parameters:
useStatementFacade- set totrueto wrap statements
-
purge
public void purge()
-
purgeOnReturn
public void purgeOnReturn()
-
-