Class NonBlockingPool
- All Implemented Interfaces:
Pool
NonBlockingPool pool provides the basic implementation of an object pool.
The implementation uses a linked list to maintain a list of (available) objects. If the pool is empty it simply creates one using the ObjectFactory instance.
Subclasses can change this behaviour by overriding getObject(...) and returnObject(....) methods. This class provides basic support for synchronization, event notification, pool shutdown and pool object recycling. It also does some very basic bookkeeping like the number of objects created, number of threads waiting for object.
Subclasses can make use of these book-keeping data to provide complex pooling mechanism like LRU / MRU / Random. Also, note that AbstractPool does not have a notion of pool limit. It is upto to the derived classes to implement these features.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanprotected booleanprotected booleanFields inherited from class com.sun.ejb.containers.util.pool.AbstractPool
_logger, appName, beanId, configData, containerClassLoader, createdCount, destroyedCount, ejbName, idleTimeoutInSeconds, maxPoolSize, maxWaitTimeInMillis, modName, pooledObjectFactory, pooledObjects, poolProbeNotifier, poolReturned, poolSuccess, resizeQuantity, steadyPoolSize, waitCount -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedNonBlockingPool(long beanId, String poolName, ObjectFactory factory, int steadyPoolSize, int resizeQuantity, int maxPoolSize, int idleTimeoutInSeconds, ClassLoader loader) NonBlockingPool(long beanId, String poolName, ObjectFactory factory, int steadyPoolSize, int resizeQuantity, int maxPoolSize, int idleTimeoutInSeconds, ClassLoader loader, boolean singletonBeanPool) -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Close the poolvoiddestroyObject(Object object) Destroys an Object.protected voiddoResize()Get an object from the pool within the specified time.protected voidinitializePool(ObjectFactory factory, int steadyPoolSize, int resizeQuantity, int maxPoolSize, int idleTimeoutInSeconds, ClassLoader loader) protected voidpreload(int count) Preload the pool with objects.voidprepopulate(int count) Prepopulate the pool with objects.protected voidremove(int count) protected voidvoidreturnObject(Object object) Return an object back to the pool.voidsetContainerClassLoader(ClassLoader loader) Methods inherited from class com.sun.ejb.containers.util.pool.AbstractPool
appendStats, getAllMonitoredAttrbuteValues, getCreatedCount, getDestroyedCount, getIdleTimeoutInSeconds, getJmsMaxMessagesLoad, getMaxPoolSize, getMaxWaitTimeInMillis, getNumBeansInPool, getNumThreadsWaiting, getPoolSuccess, getResizeQuantity, getSize, getSteadyPoolSize, getTotalBeansCreated, getTotalBeansDestroyed, getWaitCount, initializePool, setConfigData, setInfo, unregisterProbeProvider
-
Field Details
-
addedResizeTask
protected boolean addedResizeTask -
addedIdleBeanWork
protected volatile boolean addedIdleBeanWork -
inResizing
protected boolean inResizing
-
-
Constructor Details
-
NonBlockingPool
protected NonBlockingPool() -
NonBlockingPool
public NonBlockingPool(long beanId, String poolName, ObjectFactory factory, int steadyPoolSize, int resizeQuantity, int maxPoolSize, int idleTimeoutInSeconds, ClassLoader loader) -
NonBlockingPool
public NonBlockingPool(long beanId, String poolName, ObjectFactory factory, int steadyPoolSize, int resizeQuantity, int maxPoolSize, int idleTimeoutInSeconds, ClassLoader loader, boolean singletonBeanPool)
-
-
Method Details
-
initializePool
protected void initializePool(ObjectFactory factory, int steadyPoolSize, int resizeQuantity, int maxPoolSize, int idleTimeoutInSeconds, ClassLoader loader) -
setContainerClassLoader
- Overrides:
setContainerClassLoaderin classAbstractPool
-
getObject
Description copied from interface:PoolGet an object from the pool within the specified time.- Specified by:
getObjectin interfacePool- Overrides:
getObjectin classAbstractPool- Returns:
- an Object or null if an object could not be returned in 'waitForMillis' millisecond.
-
returnObject
Return an object back to the pool. An object that is obtained through getObject() must always be returned back to the pool using either returnObject(obj) or through destroyObject(obj).- Specified by:
returnObjectin interfacePool- Overrides:
returnObjectin classAbstractPool
-
destroyObject
Destroys an Object. Note that applications should not ignore the reference to the object that they got from getObject(). An object that is obtained through getObject() must always be returned back to the pool using either returnObject(obj) or through destroyObject(obj). This method tells that the object should be destroyed and cannot be reused.- Specified by:
destroyObjectin interfacePool- Overrides:
destroyObjectin classAbstractPool
-
prepopulate
public void prepopulate(int count) Prepopulate the pool with objects.- Parameters:
count- the number of objects to be added.
-
preload
protected void preload(int count) Preload the pool with objects.- Overrides:
preloadin classAbstractPool- Parameters:
count- the number of objects to be added.
-
close
public void close()Close the pool- Overrides:
closein classAbstractPool
-
remove
protected void remove(int count) - Overrides:
removein classAbstractPool
-
removeIdleObjects
protected void removeIdleObjects()- Specified by:
removeIdleObjectsin classAbstractPool
-
doResize
protected void doResize() -
getAllAttrValues
- Overrides:
getAllAttrValuesin classAbstractPool
-