Class NonBlockingPool
- java.lang.Object
-
- com.sun.ejb.containers.util.pool.AbstractPool
-
- com.sun.ejb.containers.util.pool.NonBlockingPool
-
- All Implemented Interfaces:
Pool
- Direct Known Subclasses:
BlockingPool
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 boolean
addedIdleBeanWork
protected boolean
addedResizeTask
protected boolean
inResizing
protected boolean
singletonBeanPool
If glassfish-ejb-jar.xmlsingleton-bean-pool is true, steadyPoolSize is 1, and maxPoolSize is 1, then this field is set to true, and only 1 bean instance is created. -
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, poolName, poolProbeNotifier, poolReturned, poolSuccess, resizeQuantity, steadyPoolSize, waitCount
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
NonBlockingPool()
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 void
close()
Close the poolvoid
destroyObject(Object object)
Destroys an Object.protected void
doResize()
String
getAllAttrValues()
Object
getObject(Object param)
Get an object from the pool within the specified time.protected void
preload(int count)
Preload the pool with objects.void
prepopulate(int count)
Prepopulate the pool with objects.protected void
remove(int count)
protected void
removeIdleObjects()
void
returnObject(Object object)
Return an object back to the pool.-
Methods inherited from class com.sun.ejb.containers.util.pool.AbstractPool
appendStats, getAllMonitoredAttrbuteValues, getCreatedCount, getDestroyedCount, getIdleTimeoutInSeconds, getJmsMaxMessagesLoad, getMaxPoolSize, getMaxWaitTimeInMillis, getNumBeansInPool, getNumThreadsWaiting, getObject, getObject, getPoolSuccess, getResizeQuantity, getSize, getSteadyPoolSize, getTotalBeansCreated, getTotalBeansDestroyed, getWaitCount, setConfigData, setContainerClassLoader, setInfo, unregisterProbeProvider
-
-
-
-
Field Detail
-
addedResizeTask
protected boolean addedResizeTask
-
addedIdleBeanWork
protected volatile boolean addedIdleBeanWork
-
inResizing
protected boolean inResizing
-
singletonBeanPool
protected boolean singletonBeanPool
If glassfish-ejb-jar.xmlsingleton-bean-pool is true, steadyPoolSize is 1, and maxPoolSize is 1, then this field is set to true, and only 1 bean instance is created. The pool size at any given time may be 0 or 1. Both PoolResizeTimerTask and ReSizeWork are skipped.
-
-
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
-
getObject
public Object getObject(Object param)
Description copied from interface:Pool
Get an object from the pool within the specified time. The amount of time the calling thread agrees to wait. Some value that might be used while creating the object- 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).- Parameters:
object
-
-
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.- Parameters:
object
- Object to be destroyed.
-
preload
protected void preload(int count)
Preload the pool with objects.- 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- Specified by:
close
in classAbstractPool
-
remove
protected void remove(int count)
-
removeIdleObjects
protected void removeIdleObjects()
- Specified by:
removeIdleObjects
in classAbstractPool
-
doResize
protected void doResize()
-
getAllAttrValues
public String getAllAttrValues()
- Overrides:
getAllAttrValues
in classAbstractPool
-
-