public class CommonsPoolTargetSource extends AbstractPoolingTargetSource implements org.apache.commons.pool.PoolableObjectFactory
TargetSource implementation that holds
objects in a configurable Apache Commons 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 1.5.x and 1.6. Note that this class doesn't declare Commons Pool 1.6's generic type in order to remain compatible with Commons Pool 1.5.x at runtime.
GenericObjectPool,
createObjectPool(),
AbstractPoolingTargetSource.setMaxSize(int),
setMaxIdle(int),
setMinIdle(int),
setMaxWait(long),
setTimeBetweenEvictionRunsMillis(long),
setMinEvictableIdleTimeMillis(long),
Serialized Formlogger| Constructor and Description |
|---|
CommonsPoolTargetSource()
Create a CommonsPoolTargetSource with default settings.
|
| Modifier and Type | Method and Description |
|---|---|
void |
activateObject(Object obj) |
protected org.apache.commons.pool.ObjectPool |
createObjectPool()
Subclasses can override this if they want to return a specific Commons pool.
|
protected void |
createPool()
Creates and holds an ObjectPool instance.
|
void |
destroy()
Closes the underlying
ObjectPool when destroying this object. |
void |
destroyObject(Object obj) |
int |
getActiveCount()
Return the number of active objects in the pool.
|
int |
getIdleCount()
Return the number of idle objects in the pool.
|
int |
getMaxIdle()
Return the maximum number of idle objects in the pool.
|
long |
getMaxWait()
Return the maximum waiting time for fetching an object from the pool.
|
long |
getMinEvictableIdleTimeMillis()
Return the minimum time that an idle object can sit in the pool.
|
int |
getMinIdle()
Return the minimum number of idle objects in the pool.
|
Object |
getTarget()
Borrow an object from the
ObjectPool. |
long |
getTimeBetweenEvictionRunsMillis()
Return the time between eviction runs that check idle objects.
|
byte |
getWhenExhaustedAction()
Return the action to take when the pool is exhausted.
|
Object |
makeObject() |
void |
passivateObject(Object obj) |
void |
releaseTarget(Object target)
Returns the specified object to the underlying
ObjectPool. |
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.
|
void |
setWhenExhaustedAction(byte whenExhaustedAction)
Set the action to take when the pool is exhausted.
|
void |
setWhenExhaustedActionName(String whenExhaustedActionName)
Set the action to take when the pool is exhausted.
|
boolean |
validateObject(Object obj) |
getMaxSize, getPoolingConfigMixin, setBeanFactory, setMaxSizedestroyPrototypeInstance, newPrototypeInstance, writeReplacecopyFrom, equals, getBeanFactory, getTargetBeanName, getTargetClass, hashCode, isStatic, setTargetBeanName, setTargetClass, toStringpublic CommonsPoolTargetSource()
AbstractPoolingTargetSource.setMaxSize(int),
GenericObjectPool.setMaxActive(int)public void setMaxIdle(int maxIdle)
GenericObjectPool.setMaxIdle(int)public int getMaxIdle()
public void setMinIdle(int minIdle)
GenericObjectPool.setMinIdle(int)public int getMinIdle()
public void setMaxWait(long maxWait)
GenericObjectPool.setMaxWait(long)public long getMaxWait()
public void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis)
GenericObjectPool.setTimeBetweenEvictionRunsMillis(long)public long getTimeBetweenEvictionRunsMillis()
public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis)
Note that eviction runs need to be performed to take this setting into effect.
setTimeBetweenEvictionRunsMillis(long),
GenericObjectPool.setMinEvictableIdleTimeMillis(long)public long getMinEvictableIdleTimeMillis()
public void setWhenExhaustedActionName(String whenExhaustedActionName)
setWhenExhaustedAction(byte)public void setWhenExhaustedAction(byte whenExhaustedAction)
GenericObjectPool.setWhenExhaustedAction(byte),
GenericObjectPool.WHEN_EXHAUSTED_BLOCK,
GenericObjectPool.WHEN_EXHAUSTED_FAIL,
GenericObjectPool.WHEN_EXHAUSTED_GROWpublic byte getWhenExhaustedAction()
protected final void createPool()
createPool in class AbstractPoolingTargetSourcecreateObjectPool()protected org.apache.commons.pool.ObjectPool createObjectPool()
Default is a GenericObjectPool instance with the given pool size.
ObjectPool.GenericObjectPool,
AbstractPoolingTargetSource.setMaxSize(int)public Object getTarget() throws Exception
ObjectPool.getTarget in interface TargetSourcegetTarget in class AbstractPoolingTargetSourceException - we may need to deal with checked exceptions from pool
APIs, so we're forgiving with our exception signaturepublic void releaseTarget(Object target) throws Exception
ObjectPool.releaseTarget in interface TargetSourcereleaseTarget in class AbstractPoolingTargetSourcetarget - object that must have been acquired from the pool
via a call to getTarget()Exception - to allow pooling APIs to throw exceptionAbstractPoolingTargetSource.getTarget()public int getActiveCount()
throws UnsupportedOperationException
PoolingConfiggetActiveCount in interface PoolingConfigUnsupportedOperationException - if not supported by the poolpublic int getIdleCount()
throws UnsupportedOperationException
PoolingConfiggetIdleCount in interface PoolingConfigUnsupportedOperationException - if not supported by the poolpublic void destroy()
throws Exception
ObjectPool when destroying this object.destroy in interface DisposableBeanException - in case of shutdown errors.
Exceptions will get logged but not rethrown to allow
other beans to release their resources too.public Object makeObject() throws BeansException
makeObject in interface org.apache.commons.pool.PoolableObjectFactoryBeansExceptionpublic void destroyObject(Object obj) throws Exception
destroyObject in interface org.apache.commons.pool.PoolableObjectFactoryExceptionpublic boolean validateObject(Object obj)
validateObject in interface org.apache.commons.pool.PoolableObjectFactorypublic void activateObject(Object obj)
activateObject in interface org.apache.commons.pool.PoolableObjectFactorypublic void passivateObject(Object obj)
passivateObject in interface org.apache.commons.pool.PoolableObjectFactory