Class PoolableConnectionFactory
- java.lang.Object
-
- org.apache.tomcat.dbcp.dbcp2.PoolableConnectionFactory
-
- All Implemented Interfaces:
PooledObjectFactory<PoolableConnection>
- Direct Known Subclasses:
PoolableManagedConnectionFactory
public class PoolableConnectionFactory extends java.lang.Object implements PooledObjectFactory<PoolableConnection>
APooledObjectFactory
that createsPoolableConnection
s.- Since:
- 2.0
-
-
Constructor Summary
Constructors Constructor Description PoolableConnectionFactory(ConnectionFactory connFactory, javax.management.ObjectName dataSourceJmxObjectName)
Creates a newPoolableConnectionFactory
.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
activateObject(PooledObject<PoolableConnection> p)
Reinitializes an instance to be returned by the pool.void
destroyObject(PooledObject<PoolableConnection> p)
Destroys an instance no longer needed by the pool, using the default (NORMAL) DestroyMode.void
destroyObject(PooledObject<PoolableConnection> p, DestroyMode mode)
Destroys an instance no longer needed by the pool, using the provided DestroyMode.boolean
getCacheState()
Gets the cache state.ConnectionFactory
getConnectionFactory()
Gets the connection factory.protected java.util.concurrent.atomic.AtomicLong
getConnectionIndex()
java.util.Collection<java.lang.String>
getConnectionInitSqls()
javax.management.ObjectName
getDataSourceJmxName()
javax.management.ObjectName
getDataSourceJmxObjectName()
java.lang.Boolean
getDefaultAutoCommit()
java.lang.String
getDefaultCatalog()
java.lang.Integer
getDefaultQueryTimeout()
Deprecated.java.time.Duration
getDefaultQueryTimeoutDuration()
Gets the default query timeout Duration.java.lang.Integer
getDefaultQueryTimeoutSeconds()
Deprecated.java.lang.Boolean
getDefaultReadOnly()
java.lang.String
getDefaultSchema()
int
getDefaultTransactionIsolation()
java.util.Collection<java.lang.String>
getDisconnectionSqlCodes()
SQL_STATE codes considered to signal fatal conditions.java.time.Duration
getMaxConnDuration()
Gets the Maximum connection duration.long
getMaxConnLifetimeMillis()
Gets the Maximum connection lifetime in milliseconds.protected int
getMaxOpenPreparedStatements()
ObjectPool<PoolableConnection>
getPool()
Returns theObjectPool
in whichConnection
s are pooled.boolean
getPoolStatements()
java.lang.String
getValidationQuery()
java.time.Duration
getValidationQueryTimeoutDuration()
Gets the query timeout in seconds.int
getValidationQueryTimeoutSeconds()
Deprecated.protected void
initializeConnection(java.sql.Connection conn)
boolean
isAutoCommitOnReturn()
boolean
isEnableAutoCommitOnReturn()
Deprecated.boolean
isFastFailValidation()
True means that validation will fail immediately for connections that have previously thrown SQLExceptions with SQL_STATE indicating fatal disconnection errors.boolean
isRollbackOnReturn()
PooledObject<PoolableConnection>
makeObject()
Creates an instance that can be served by the pool and wrap it in aPooledObject
to be managed by the pool.void
passivateObject(PooledObject<PoolableConnection> p)
Uninitializes an instance to be returned to the idle object pool.void
setAutoCommitOnReturn(boolean autoCommitOnReturn)
void
setCacheState(boolean cacheState)
void
setClearStatementPoolOnReturn(boolean clearStatementPoolOnReturn)
Sets whether the pool of statements (which was enabled withsetPoolStatements(boolean)
) should be cleared when the connection is returned to its pool.void
setConnectionInitSql(java.util.Collection<java.lang.String> connectionInitSqls)
Sets the SQL statements I use to initialize newly createdConnection
s.void
setDefaultAutoCommit(java.lang.Boolean defaultAutoCommit)
Sets the default "auto commit" setting for borrowedConnection
svoid
setDefaultCatalog(java.lang.String defaultCatalog)
Sets the default "catalog" setting for borrowedConnection
svoid
setDefaultQueryTimeout(java.lang.Integer defaultQueryTimeoutSeconds)
Deprecated.void
setDefaultQueryTimeout(java.time.Duration defaultQueryTimeoutDuration)
Sets the query timeout Duration.void
setDefaultReadOnly(java.lang.Boolean defaultReadOnly)
Sets the default "read only" setting for borrowedConnection
svoid
setDefaultSchema(java.lang.String defaultSchema)
Sets the default "schema" setting for borrowedConnection
svoid
setDefaultTransactionIsolation(int defaultTransactionIsolation)
Sets the default "Transaction Isolation" setting for borrowedConnection
svoid
setDisconnectionSqlCodes(java.util.Collection<java.lang.String> disconnectionSqlCodes)
void
setEnableAutoCommitOnReturn(boolean autoCommitOnReturn)
Deprecated.void
setFastFailValidation(boolean fastFailValidation)
void
setMaxConn(java.time.Duration maxConnDuration)
Sets the maximum lifetime in milliseconds of a connection after which the connection will always fail activation, passivation and validation.void
setMaxConnLifetimeMillis(long maxConnLifetimeMillis)
Deprecated.UsesetMaxConn(Duration)
.void
setMaxOpenPreparedStatements(int maxOpenPreparedStatements)
Sets the maximum number of open prepared statements.void
setMaxOpenPrepatedStatements(int maxOpenPreparedStatements)
Deprecated.void
setPool(ObjectPool<PoolableConnection> pool)
Sets theObjectPool
in which to poolConnection
s.void
setPoolStatements(boolean poolStatements)
void
setRollbackOnReturn(boolean rollbackOnReturn)
void
setValidationQuery(java.lang.String validationQuery)
Sets the query I use tovalidate
Connection
s.void
setValidationQueryTimeout(int validationQueryTimeoutSeconds)
Deprecated.void
setValidationQueryTimeout(java.time.Duration validationQueryTimeoutDuration)
Sets the validation query timeout, the amount of time, that connection validation will wait for a response from the database when executing a validation query.void
validateConnection(PoolableConnection conn)
Validates the given connection if it is open.boolean
validateObject(PooledObject<PoolableConnection> p)
Ensures that the instance is safe to be returned by the pool.
-
-
-
Constructor Detail
-
PoolableConnectionFactory
public PoolableConnectionFactory(ConnectionFactory connFactory, javax.management.ObjectName dataSourceJmxObjectName)
Creates a newPoolableConnectionFactory
.- Parameters:
connFactory
- theConnectionFactory
from which to obtain baseConnection
sdataSourceJmxObjectName
- The JMX object name, may be null.
-
-
Method Detail
-
activateObject
public void activateObject(PooledObject<PoolableConnection> p) throws java.lang.Exception
Description copied from interface:PooledObjectFactory
Reinitializes an instance to be returned by the pool.- Specified by:
activateObject
in interfacePooledObjectFactory<PoolableConnection>
- Parameters:
p
- aPooledObject
wrapping the instance to be activated- Throws:
java.lang.Exception
- if there is a problem activatingobj
, this exception may be swallowed by the pool.- See Also:
PooledObjectFactory.destroyObject(org.apache.tomcat.dbcp.pool2.PooledObject<T>)
-
destroyObject
public void destroyObject(PooledObject<PoolableConnection> p) throws java.lang.Exception
Description copied from interface:PooledObjectFactory
Destroys an instance no longer needed by the pool, using the default (NORMAL) DestroyMode.It is important for implementations of this method to be aware that there is no guarantee about what state
obj
will be in and the implementation should be prepared to handle unexpected errors.Also, an implementation must take in to consideration that instances lost to the garbage collector may never be destroyed.
- Specified by:
destroyObject
in interfacePooledObjectFactory<PoolableConnection>
- Parameters:
p
- aPooledObject
wrapping the instance to be destroyed- Throws:
java.lang.Exception
- should be avoided as it may be swallowed by the pool implementation.- See Also:
PooledObjectFactory.validateObject(org.apache.tomcat.dbcp.pool2.PooledObject<T>)
,ObjectPool.invalidateObject(T)
-
destroyObject
public void destroyObject(PooledObject<PoolableConnection> p, DestroyMode mode) throws java.lang.Exception
Description copied from interface:PooledObjectFactory
Destroys an instance no longer needed by the pool, using the provided DestroyMode.- Specified by:
destroyObject
in interfacePooledObjectFactory<PoolableConnection>
- Parameters:
p
- aPooledObject
wrapping the instance to be destroyedmode
- DestroyMode providing context to the factory- Throws:
java.lang.Exception
- should be avoided as it may be swallowed by the pool implementation.- Since:
- 2.9.0
- See Also:
PooledObjectFactory.validateObject(org.apache.tomcat.dbcp.pool2.PooledObject<T>)
,ObjectPool.invalidateObject(T)
,PooledObjectFactory.destroyObject(PooledObject)
,DestroyMode
-
getCacheState
public boolean getCacheState()
Gets the cache state.- Returns:
- The cache state.
- Since:
- Made public in 2.6.0.
-
getConnectionFactory
public ConnectionFactory getConnectionFactory()
Gets the connection factory.- Returns:
- The connection factory.
- Since:
- Made public in 2.6.0.
-
getConnectionIndex
protected java.util.concurrent.atomic.AtomicLong getConnectionIndex()
-
getConnectionInitSqls
public java.util.Collection<java.lang.String> getConnectionInitSqls()
- Returns:
- The collection of initialization SQL statements.
- Since:
- 2.6.0
-
getDataSourceJmxName
public javax.management.ObjectName getDataSourceJmxName()
- Returns:
- The data source JMX ObjectName
- Since:
- Made public in 2.6.0.
-
getDataSourceJmxObjectName
public javax.management.ObjectName getDataSourceJmxObjectName()
- Returns:
- The data source JMS ObjectName.
- Since:
- 2.6.0
-
getDefaultAutoCommit
public java.lang.Boolean getDefaultAutoCommit()
- Returns:
- Default auto-commit value.
- Since:
- 2.6.0
-
getDefaultCatalog
public java.lang.String getDefaultCatalog()
- Returns:
- Default catalog.
- Since:
- 2.6.0
-
getDefaultQueryTimeout
@Deprecated public java.lang.Integer getDefaultQueryTimeout()
Deprecated.- Returns:
- Default query timeout in seconds.
-
getDefaultQueryTimeoutDuration
public java.time.Duration getDefaultQueryTimeoutDuration()
Gets the default query timeout Duration.- Returns:
- Default query timeout Duration.
- Since:
- 2.10.0
-
getDefaultQueryTimeoutSeconds
@Deprecated public java.lang.Integer getDefaultQueryTimeoutSeconds()
Deprecated.- Returns:
- Default query timeout in seconds.
- Since:
- 2.6.0
-
getDefaultReadOnly
public java.lang.Boolean getDefaultReadOnly()
- Returns:
- Default read-only-value.
- Since:
- 2.6.0
-
getDefaultSchema
public java.lang.String getDefaultSchema()
- Returns:
- Default schema.
- Since:
- 2.6.0
-
getDefaultTransactionIsolation
public int getDefaultTransactionIsolation()
- Returns:
- Default transaction isolation.
- Since:
- 2.6.0
-
getDisconnectionSqlCodes
public java.util.Collection<java.lang.String> getDisconnectionSqlCodes()
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 andisFastFailValidation()
istrue
, whenever connections created by this factory 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
isFastFailValidation()
isfalse
setting this property has no effect.- Returns:
- SQL_STATE codes overriding defaults
- Since:
- 2.1
-
getMaxConnDuration
public java.time.Duration getMaxConnDuration()
Gets the Maximum connection duration.- Returns:
- Maximum connection duration.
- Since:
- 2.10.0
-
getMaxConnLifetimeMillis
public long getMaxConnLifetimeMillis()
Gets the Maximum connection lifetime in milliseconds.- Returns:
- Maximum connection lifetime in milliseconds.
- Since:
- 2.6.0
-
getMaxOpenPreparedStatements
protected int getMaxOpenPreparedStatements()
-
getPool
public ObjectPool<PoolableConnection> getPool()
Returns theObjectPool
in whichConnection
s are pooled.- Returns:
- the connection pool
-
getPoolStatements
public boolean getPoolStatements()
- Returns:
- Whether to pool statements.
- Since:
- Made public in 2.6.0.
-
getValidationQuery
public java.lang.String getValidationQuery()
- Returns:
- Validation query.
- Since:
- 2.6.0
-
getValidationQueryTimeoutDuration
public java.time.Duration getValidationQueryTimeoutDuration()
Gets the query timeout in seconds.- Returns:
- Validation query timeout in seconds.
- Since:
- 2.10.0
-
getValidationQueryTimeoutSeconds
@Deprecated public int getValidationQueryTimeoutSeconds()
Deprecated.Gets the query timeout in seconds.- Returns:
- Validation query timeout in seconds.
- Since:
- 2.6.0
-
initializeConnection
protected void initializeConnection(java.sql.Connection conn) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
isAutoCommitOnReturn
public boolean isAutoCommitOnReturn()
- Returns:
- Whether to auto-commit on return.
- Since:
- 2.6.0
-
isEnableAutoCommitOnReturn
@Deprecated public boolean isEnableAutoCommitOnReturn()
Deprecated.- Returns:
- Whether to auto-commit on return.
-
isFastFailValidation
public boolean isFastFailValidation()
True means that validation will fail immediately for connections that have previously thrown SQLExceptions with SQL_STATE indicating fatal disconnection errors.- Returns:
- true if connections created by this factory will fast fail validation.
- Since:
- 2.1, 2.5.0 Defaults to true, previous versions defaulted to false.
- See Also:
setDisconnectionSqlCodes(Collection)
-
isRollbackOnReturn
public boolean isRollbackOnReturn()
- Returns:
- Whether to rollback on return.
-
makeObject
public PooledObject<PoolableConnection> makeObject() throws java.lang.Exception
Description copied from interface:PooledObjectFactory
Creates an instance that can be served by the pool and wrap it in aPooledObject
to be managed by the pool.- Specified by:
makeObject
in interfacePooledObjectFactory<PoolableConnection>
- Returns:
- a
PooledObject
wrapping an instance that can be served by the pool - Throws:
java.lang.Exception
- if there is a problem creating a new instance, this will be propagated to the code requesting an object.
-
passivateObject
public void passivateObject(PooledObject<PoolableConnection> p) throws java.lang.Exception
Description copied from interface:PooledObjectFactory
Uninitializes an instance to be returned to the idle object pool.- Specified by:
passivateObject
in interfacePooledObjectFactory<PoolableConnection>
- Parameters:
p
- aPooledObject
wrapping the instance to be passivated- Throws:
java.lang.Exception
- if there is a problem passivatingobj
, this exception may be swallowed by the pool.- See Also:
PooledObjectFactory.destroyObject(org.apache.tomcat.dbcp.pool2.PooledObject<T>)
-
setAutoCommitOnReturn
public void setAutoCommitOnReturn(boolean autoCommitOnReturn)
-
setCacheState
public void setCacheState(boolean cacheState)
-
setClearStatementPoolOnReturn
public void setClearStatementPoolOnReturn(boolean clearStatementPoolOnReturn)
Sets whether the pool of statements (which was enabled withsetPoolStatements(boolean)
) should be cleared when the connection is returned to its pool. Default is false.- Parameters:
clearStatementPoolOnReturn
- clear or not- Since:
- 2.8.0
-
setConnectionInitSql
public void setConnectionInitSql(java.util.Collection<java.lang.String> connectionInitSqls)
Sets the SQL statements I use to initialize newly createdConnection
s. Usingnull
turns off connection initialization.- Parameters:
connectionInitSqls
- SQL statement to initializeConnection
s.
-
setDefaultAutoCommit
public void setDefaultAutoCommit(java.lang.Boolean defaultAutoCommit)
Sets the default "auto commit" setting for borrowedConnection
s- Parameters:
defaultAutoCommit
- the default "auto commit" setting for borrowedConnection
s
-
setDefaultCatalog
public void setDefaultCatalog(java.lang.String defaultCatalog)
Sets the default "catalog" setting for borrowedConnection
s- Parameters:
defaultCatalog
- the default "catalog" setting for borrowedConnection
s
-
setDefaultQueryTimeout
public void setDefaultQueryTimeout(java.time.Duration defaultQueryTimeoutDuration)
Sets the query timeout Duration.- Parameters:
defaultQueryTimeoutDuration
- the query timeout Duration.- Since:
- 2.10.0
-
setDefaultQueryTimeout
@Deprecated public void setDefaultQueryTimeout(java.lang.Integer defaultQueryTimeoutSeconds)
Deprecated.Sets the query timeout in seconds.- Parameters:
defaultQueryTimeoutSeconds
- the query timeout in seconds.
-
setDefaultReadOnly
public void setDefaultReadOnly(java.lang.Boolean defaultReadOnly)
Sets the default "read only" setting for borrowedConnection
s- Parameters:
defaultReadOnly
- the default "read only" setting for borrowedConnection
s
-
setDefaultSchema
public void setDefaultSchema(java.lang.String defaultSchema)
Sets the default "schema" setting for borrowedConnection
s- Parameters:
defaultSchema
- the default "schema" setting for borrowedConnection
s- Since:
- 2.5.0
-
setDefaultTransactionIsolation
public void setDefaultTransactionIsolation(int defaultTransactionIsolation)
Sets the default "Transaction Isolation" setting for borrowedConnection
s- Parameters:
defaultTransactionIsolation
- the default "Transaction Isolation" setting for returnedConnection
s
-
setDisconnectionSqlCodes
public void setDisconnectionSqlCodes(java.util.Collection<java.lang.String> disconnectionSqlCodes)
- Parameters:
disconnectionSqlCodes
- The disconnection SQL codes.- Since:
- 2.1
- See Also:
getDisconnectionSqlCodes()
-
setEnableAutoCommitOnReturn
@Deprecated public void setEnableAutoCommitOnReturn(boolean autoCommitOnReturn)
Deprecated.- Parameters:
autoCommitOnReturn
- Whether to auto-commit on return.
-
setFastFailValidation
public void setFastFailValidation(boolean fastFailValidation)
- Parameters:
fastFailValidation
- true means connections created by this factory will fast fail validation- Since:
- 2.1
- See Also:
isFastFailValidation()
-
setMaxConn
public void setMaxConn(java.time.Duration maxConnDuration)
Sets the maximum lifetime in milliseconds of a connection after which the connection will always fail activation, passivation and validation. A value of zero or less indicates an infinite lifetime. The default value is -1.- Parameters:
maxConnDuration
- The maximum lifetime in milliseconds.- Since:
- 2.10.0
-
setMaxConnLifetimeMillis
@Deprecated public void setMaxConnLifetimeMillis(long maxConnLifetimeMillis)
Deprecated.UsesetMaxConn(Duration)
.Sets the maximum lifetime in milliseconds of a connection after which the connection will always fail activation, passivation and validation. A value of zero or less indicates an infinite lifetime. The default value is -1.- Parameters:
maxConnLifetimeMillis
- The maximum lifetime in milliseconds.
-
setMaxOpenPreparedStatements
public void setMaxOpenPreparedStatements(int maxOpenPreparedStatements)
Sets the maximum number of open prepared statements.- Parameters:
maxOpenPreparedStatements
- The maximum number of open prepared statements.
-
setMaxOpenPrepatedStatements
@Deprecated public void setMaxOpenPrepatedStatements(int maxOpenPreparedStatements)
Deprecated.Deprecated due to typo in method name.- Parameters:
maxOpenPreparedStatements
- The maximum number of open prepared statements.
-
setPool
public void setPool(ObjectPool<PoolableConnection> pool)
Sets theObjectPool
in which to poolConnection
s.- Parameters:
pool
- theObjectPool
in which to pool thoseConnection
s
-
setPoolStatements
public void setPoolStatements(boolean poolStatements)
-
setRollbackOnReturn
public void setRollbackOnReturn(boolean rollbackOnReturn)
-
setValidationQuery
public void setValidationQuery(java.lang.String validationQuery)
Sets the query I use tovalidate
Connection
s. Should return at least one row. If not specified,Connection.isValid(int)
will be used to validate connections.- Parameters:
validationQuery
- a query to use tovalidate
Connection
s.
-
setValidationQueryTimeout
public void setValidationQueryTimeout(java.time.Duration validationQueryTimeoutDuration)
Sets the validation query timeout, the amount of time, 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.- Parameters:
validationQueryTimeoutDuration
- new validation query timeout duration.- 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.- Parameters:
validationQueryTimeoutSeconds
- new validation query timeout value in seconds
-
validateConnection
public void validateConnection(PoolableConnection conn) throws java.sql.SQLException
Validates the given connection if it is open.- Parameters:
conn
- the connection to validate.- Throws:
java.sql.SQLException
- if the connection is closed or validate fails.
-
validateObject
public boolean validateObject(PooledObject<PoolableConnection> p)
Description copied from interface:PooledObjectFactory
Ensures that the instance is safe to be returned by the pool.- Specified by:
validateObject
in interfacePooledObjectFactory<PoolableConnection>
- Parameters:
p
- aPooledObject
wrapping the instance to be validated- Returns:
false
ifobj
is not valid and should be dropped from the pool,true
otherwise.
-
-