org.jboss.ejb.plugins
Class AbstractInstancePool

java.lang.Object
  extended byorg.jboss.mx.util.JBossNotificationBroadcasterSupport (src) 
      extended byorg.jboss.system.ServiceMBeanSupport (src) 
          extended byorg.jboss.ejb.plugins.AbstractInstancePool
All Implemented Interfaces:
AllowedOperationsFlags (src) , ContainerPlugin (src) , InstancePool (src) , MBeanRegistration (src) , NotificationBroadcaster (src) , NotificationEmitter (src) , Service (src) , ServiceMBean (src) , XmlLoadable (src)
Direct Known Subclasses:
EntityInstancePool (src) , MessageDrivenInstancePool (src) , SingletonStatelessSessionInstancePool (src) , StatefulSessionInstancePool (src) , StatelessSessionInstancePool (src)

public abstract class AbstractInstancePool
extends ServiceMBeanSupport (src)
implements InstancePool (src) , XmlLoadable (src)

Abstract Instance Pool class containing the basic logic to create an EJB Instance Pool.


Field Summary
protected  Container (src) container
          The Container the instance pool is associated with
protected  int maxSize
          The maximum number of instances allowed in the pool
protected  java.util.LinkedList pool
          The pool data structure
protected  boolean reclaim
          determine if we reuse EnterpriseContext objects i.e.
 
Fields inherited from class org.jboss.system.ServiceMBeanSupport (src)
log, server, SERVICE_CONTROLLER_SIG, serviceName
 
Fields inherited from interface org.jboss.ejb.AllowedOperationsFlags (src)
IN_AFTER_BEGIN, IN_AFTER_COMPLETION, IN_BEFORE_COMPLETION, IN_BUSINESS_METHOD, IN_EJB_ACTIVATE, IN_EJB_CREATE, IN_EJB_FIND, IN_EJB_HOME, IN_EJB_LOAD, IN_EJB_PASSIVATE, IN_EJB_POST_CREATE, IN_EJB_REMOVE, IN_EJB_STORE, IN_EJB_TIMEOUT, IN_INTERCEPTOR_METHOD, IN_SERVICE_ENDPOINT_METHOD, IN_SET_ENTITY_CONTEXT, IN_SET_MESSAGE_DRIVEN_CONTEXT, IN_SET_SESSION_CONTEXT, IN_UNSET_ENTITY_CONTEXT, NOT_ALLOWED
 
Fields inherited from interface org.jboss.system.ServiceMBean (src)
CREATE_EVENT, CREATED, DESTROY_EVENT, DESTROYED, FAILED, REGISTERED, START_EVENT, STARTED, STARTING, states, STOP_EVENT, STOPPED, STOPPING, UNREGISTERED
 
Constructor Summary
AbstractInstancePool()
           
 
Method Summary
protected abstract  EnterpriseContext (src) create(java.lang.Object instance)
           
protected  void destroyService()
          Sub-classes should override this method to provide custum 'destroy' logic.
 void discard(EnterpriseContext (src)  ctx)
          Discard an anonymous instance after invocation.
 void free(EnterpriseContext (src)  ctx)
          Return an instance after invocation.
 EnterpriseContext (src) get()
          Get an instance without identity.
 long getAvailableCount()
          Get the current avaiable count from the strict max view.
 Container (src) getContainer()
           
 int getCurrentSize()
          Return the size of the pool.
 int getMaxSize()
          Get the maximum size of the pool.
 void importXml(org.w3c.dom.Element element)
          XmlLoadable implementation
 void setContainer(Container (src)  c)
          Set the callback to the container.
 
Methods inherited from class org.jboss.system.ServiceMBeanSupport (src)
create, createService, destroy, getLog, getName, getNextNotificationSequenceNumber, getObjectName, getServer, getServiceName, getState, getStateString, jbossInternalCreate, jbossInternalDescription, jbossInternalDestroy, jbossInternalLifecycle, jbossInternalStart, jbossInternalStop, postDeregister, postRegister, preDeregister, preRegister, start, startService, stop, stopService
 
Methods inherited from class org.jboss.mx.util.JBossNotificationBroadcasterSupport (src)
addNotificationListener, getNotificationInfo, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.jboss.system.Service (src)
create, destroy, start, stop
 

Field Detail

container

protected Container (src)  container
The Container the instance pool is associated with


pool

protected java.util.LinkedList pool
The pool data structure


maxSize

protected int maxSize
The maximum number of instances allowed in the pool


reclaim

protected boolean reclaim
determine if we reuse EnterpriseContext objects i.e. if we actually do pooling

Constructor Detail

AbstractInstancePool

public AbstractInstancePool()
Method Detail

setContainer

public void setContainer(Container (src)  c)
Set the callback to the container. This is for initialization. The IM may extract the configuration from the container.

Specified by:
setContainer in interface ContainerPlugin (src)
Parameters:
c -

getContainer

public Container (src)  getContainer()
Returns:
Callback to the container which can be null if not set proviously

getCurrentSize

public int getCurrentSize()
Description copied from interface: InstancePool (src)
Return the size of the pool.

Specified by:
getCurrentSize in interface InstancePool (src)
Returns:
the current pool size

getMaxSize

public int getMaxSize()
Description copied from interface: InstancePool (src)
Get the maximum size of the pool.

Specified by:
getMaxSize in interface InstancePool (src)
Returns:
the current pool size

getAvailableCount

public long getAvailableCount()
Get the current avaiable count from the strict max view. If there is no strict max then this will be Long.MAX_VALUE to indicate there is no restriction.

Returns:
the current avaiable count from the strict max view

get

public EnterpriseContext (src)  get()
                      throws java.lang.Exception
Get an instance without identity. Can be used by finders,create-methods, and activation

Specified by:
get in interface InstancePool (src)
Returns:
Context /w instance
Throws:
java.rmi.RemoteException
java.lang.Exception - RemoteException

free

public void free(EnterpriseContext (src)  ctx)
Return an instance after invocation. Called in 2 cases: a) Done with finder method b) Just removed

Specified by:
free in interface InstancePool (src)
Parameters:
ctx -

discard

public void discard(EnterpriseContext (src)  ctx)
Description copied from interface: InstancePool (src)
Discard an anonymous instance after invocation. This is called if the instance should not be reused, perhaps due to some exception being thrown from it.

Specified by:
discard in interface InstancePool (src)
Parameters:
ctx - The context to discard.

importXml

public void importXml(org.w3c.dom.Element element)
               throws DeploymentException (src) 
XmlLoadable implementation

Specified by:
importXml in interface XmlLoadable (src)
Throws:
DeploymentException (src)

create

protected abstract EnterpriseContext (src)  create(java.lang.Object instance)
                                     throws java.lang.Exception
Throws:
java.lang.Exception

destroyService

protected void destroyService()
                       throws java.lang.Exception
Description copied from class: ServiceMBeanSupport (src)
Sub-classes should override this method to provide custum 'destroy' logic.

This method is empty, and is provided for convenience when concrete service classes do not need to perform anything specific for this state change.

Overrides:
destroyService in class ServiceMBeanSupport (src)
Throws:
java.lang.Exception