Class NonBlockingPool
- java.lang.Object
-
- com.sun.ejb.containers.util.pool.AbstractPool
-
- com.sun.ejb.containers.util.pool.NonBlockingPool
-
- All Implemented Interfaces:
Pool
public class NonBlockingPool extends AbstractPool
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
Fields Modifier and Type Field Description protected booleanaddedIdleBeanWorkprotected booleanaddedResizeTaskprotected booleaninResizing-
Fields inherited from class com.sun.ejb.containers.util.pool.AbstractPool
_logger, appName, beanId, configData, containerClassLoader, createdCount, destroyedCount, ejbName, factory, idleTimeoutInSeconds, list, maxPoolSize, maxWaitTimeInMillis, modName, poolProbeNotifier, poolReturned, poolSuccess, resizeQuantity, steadyPoolSize, waitCount
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedNonBlockingPool()NonBlockingPool(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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()Close the poolvoiddestroyObject(Object object)Destroys an Object.protected voiddoResize()StringgetAllAttrValues()ObjectgetObject(boolean canWait, Object param)Get an object.ObjectgetObject(long maxWaitTime, Object param)ObjectgetObject(Object param)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 voidremoveIdleObjects()voidreturnObject(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
-
-
-
-
Constructor Detail
-
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 Detail
-
initializePool
protected void initializePool(ObjectFactory factory, int steadyPoolSize, int resizeQuantity, int maxPoolSize, int idleTimeoutInSeconds, ClassLoader loader)
-
setContainerClassLoader
public void setContainerClassLoader(ClassLoader loader)
- Overrides:
setContainerClassLoaderin classAbstractPool
-
getObject
public Object getObject(boolean canWait, Object param) throws PoolException
Get an object. Application can use pool.getObject() to get an object instead of using new XXX().- Specified by:
getObjectin interfacePool- Overrides:
getObjectin classAbstractPool- Parameters:
canWait- Must be true if the calling thread is willing to wait for infinite time to get an object, false if the calling thread does not want to wait at all.- Throws:
PoolException
-
getObject
public Object getObject(long maxWaitTime, Object param) throws PoolException
- Specified by:
getObjectin interfacePool- Overrides:
getObjectin classAbstractPool- Throws:
PoolException
-
getObject
public Object getObject(Object param)
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
public void returnObject(Object object)
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
public void destroyObject(Object object)
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
-
preload
protected void preload(int count)
Preload the pool with objects.- Overrides:
preloadin classAbstractPool- Parameters:
count- the number of objects to be added.
-
prepopulate
public void prepopulate(int count)
Prepopulate the pool with objects.- 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
public String getAllAttrValues()
- Overrides:
getAllAttrValuesin classAbstractPool
-
-