Class CommonsPool2TargetSource
- All Implemented Interfaces:
Serializable
,org.apache.commons.pool2.PooledObjectFactory<Object>
,PoolingConfig
,TargetClassAware
,TargetSource
,Aware
,BeanFactoryAware
,DisposableBean
TargetSource
implementation that holds
objects in a configurable Apache Commons2 Pool.
By default, an instance of GenericObjectPool
is created.
Subclasses may change the type of ObjectPool
used by
overriding the createObjectPool()
method.
Provides many configuration properties mirroring those of the Commons Pool
GenericObjectPool
class; these properties are passed to the
GenericObjectPool
during construction. If creating a subclass of this
class to change the ObjectPool
implementation type, pass in the values
of configuration properties that are relevant to your chosen implementation.
The testOnBorrow
, testOnReturn
and testWhileIdle
properties are explicitly not mirrored because the implementation of
PoolableObjectFactory
used by this class does not implement
meaningful validation. All exposed Commons Pool properties use the
corresponding Commons Pool defaults.
Compatible with Apache Commons Pool 2.4, as of Spring 4.2.
- Since:
- 4.2
- Author:
- Rod Johnson, Rob Harrop, Juergen Hoeller, Stephane Nicoll, Kazuki Shimizu
- See Also:
-
Field Summary
Fields inherited from class org.springframework.aop.target.AbstractBeanFactoryBasedTargetSource
logger
-
Constructor Summary
ConstructorDescriptionCreate a CommonsPoolTargetSource with default settings. -
Method Summary
Modifier and TypeMethodDescriptionvoid
activateObject
(org.apache.commons.pool2.PooledObject<Object> p) protected org.apache.commons.pool2.ObjectPool
Subclasses can override this if they want to return a specific Commons pool.protected final void
Creates and holds an ObjectPool instance.void
destroy()
Closes the underlyingObjectPool
when destroying this object.void
destroyObject
(org.apache.commons.pool2.PooledObject<Object> p) int
Return the number of active objects in the pool.int
Return the number of idle objects in the pool.int
Return the maximum number of idle objects in the pool.long
Return the maximum waiting time for fetching an object from the pool.long
Return the minimum time that an idle object can sit in the pool.int
Return the minimum number of idle objects in the pool.Borrows an object from theObjectPool
.long
Return the time between eviction runs that check idle objects.boolean
Specify if the call should block when the pool is exhausted.org.apache.commons.pool2.PooledObject<Object>
void
passivateObject
(org.apache.commons.pool2.PooledObject<Object> p) void
releaseTarget
(Object target) Returns the specified object to the underlyingObjectPool
.void
setBlockWhenExhausted
(boolean blockWhenExhausted) Set whether the call should bock when the pool is exhausted.void
setMaxIdle
(int maxIdle) Set the maximum number of idle objects in the pool.void
setMaxWait
(long maxWait) Set the maximum waiting time for fetching an object from the pool.void
setMinEvictableIdleTimeMillis
(long minEvictableIdleTimeMillis) Set the minimum time that an idle object can sit in the pool before it becomes subject to eviction.void
setMinIdle
(int minIdle) Set the minimum number of idle objects in the pool.void
setTimeBetweenEvictionRunsMillis
(long timeBetweenEvictionRunsMillis) Set the time between eviction runs that check idle objects whether they have been idle for too long or have become invalid.boolean
validateObject
(org.apache.commons.pool2.PooledObject<Object> p) Methods inherited from class org.springframework.aop.target.AbstractPoolingTargetSource
getMaxSize, getPoolingConfigMixin, setBeanFactory, setMaxSize
Methods inherited from class org.springframework.aop.target.AbstractPrototypeBasedTargetSource
destroyPrototypeInstance, newPrototypeInstance, writeReplace
Methods inherited from class org.springframework.aop.target.AbstractBeanFactoryBasedTargetSource
copyFrom, equals, getBeanFactory, getTargetBeanName, getTargetClass, hashCode, isStatic, setTargetBeanName, setTargetClass, toString
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.apache.commons.pool2.PooledObjectFactory
destroyObject
-
Constructor Details
-
CommonsPool2TargetSource
public CommonsPool2TargetSource()Create a CommonsPoolTargetSource with default settings. Default maximum size of the pool is 8.- See Also:
-
AbstractPoolingTargetSource.setMaxSize(int)
GenericObjectPoolConfig.setMaxTotal(int)
-
-
Method Details
-
setMaxIdle
public void setMaxIdle(int maxIdle) Set the maximum number of idle objects in the pool. Default is 8.- See Also:
-
GenericObjectPool.setMaxIdle(int)
-
getMaxIdle
public int getMaxIdle()Return the maximum number of idle objects in the pool. -
setMinIdle
public void setMinIdle(int minIdle) Set the minimum number of idle objects in the pool. Default is 0.- See Also:
-
GenericObjectPool.setMinIdle(int)
-
getMinIdle
public int getMinIdle()Return the minimum number of idle objects in the pool. -
setMaxWait
public void setMaxWait(long maxWait) Set the maximum waiting time for fetching an object from the pool. Default is -1, waiting forever.- See Also:
-
BaseGenericObjectPool.setMaxWaitMillis(long)
-
getMaxWait
public long getMaxWait()Return the maximum waiting time for fetching an object from the pool. -
setTimeBetweenEvictionRunsMillis
public void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) Set the time between eviction runs that check idle objects whether they have been idle for too long or have become invalid. Default is -1, not performing any eviction.- See Also:
-
BaseGenericObjectPool.setTimeBetweenEvictionRunsMillis(long)
-
getTimeBetweenEvictionRunsMillis
public long getTimeBetweenEvictionRunsMillis()Return the time between eviction runs that check idle objects. -
setMinEvictableIdleTimeMillis
public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) Set the minimum time that an idle object can sit in the pool before it becomes subject to eviction. Default is 1800000 (30 minutes).Note that eviction runs need to be performed to take this setting into effect.
- See Also:
-
setTimeBetweenEvictionRunsMillis(long)
BaseGenericObjectPool.setMinEvictableIdleTimeMillis(long)
-
getMinEvictableIdleTimeMillis
public long getMinEvictableIdleTimeMillis()Return the minimum time that an idle object can sit in the pool. -
setBlockWhenExhausted
public void setBlockWhenExhausted(boolean blockWhenExhausted) Set whether the call should bock when the pool is exhausted. -
isBlockWhenExhausted
public boolean isBlockWhenExhausted()Specify if the call should block when the pool is exhausted. -
createPool
protected final void createPool()Creates and holds an ObjectPool instance.- Specified by:
createPool
in classAbstractPoolingTargetSource
- See Also:
-
createObjectPool
protected org.apache.commons.pool2.ObjectPool createObjectPool()Subclasses can override this if they want to return a specific Commons pool. They should apply any configuration properties to the pool here.Default is a GenericObjectPool instance with the given pool size.
- Returns:
- an empty Commons
ObjectPool
. - See Also:
-
GenericObjectPool
AbstractPoolingTargetSource.setMaxSize(int)
-
getTarget
Borrows an object from theObjectPool
.- Specified by:
getTarget
in interfaceTargetSource
- Specified by:
getTarget
in classAbstractPoolingTargetSource
- Returns:
- an object from the pool
- Throws:
Exception
- we may need to deal with checked exceptions from pool APIs, so we're forgiving with our exception signature
-
releaseTarget
Returns the specified object to the underlyingObjectPool
.- Specified by:
releaseTarget
in interfaceTargetSource
- Specified by:
releaseTarget
in classAbstractPoolingTargetSource
- Parameters:
target
- object that must have been acquired from the pool via a call togetTarget()
- Throws:
Exception
- to allow pooling APIs to throw exception- See Also:
-
getActiveCount
Description copied from interface:PoolingConfig
Return the number of active objects in the pool.- Specified by:
getActiveCount
in interfacePoolingConfig
- Throws:
UnsupportedOperationException
- if not supported by the pool
-
getIdleCount
Description copied from interface:PoolingConfig
Return the number of idle objects in the pool.- Specified by:
getIdleCount
in interfacePoolingConfig
- Throws:
UnsupportedOperationException
- if not supported by the pool
-
destroy
Closes the underlyingObjectPool
when destroying this object.- Specified by:
destroy
in interfaceDisposableBean
- Throws:
Exception
- in case of shutdown errors. Exceptions will get logged but not rethrown to allow other beans to release their resources as well.
-
makeObject
-
destroyObject
-
validateObject
- Specified by:
validateObject
in interfaceorg.apache.commons.pool2.PooledObjectFactory<Object>
-
activateObject
-
passivateObject
-