org.jboss.ejb.plugins
Class AbstractInstancePool

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

public abstract class AbstractInstancePool
extends org.jboss.system.ServiceMBeanSupport
implements AbstractInstancePoolMBean, InstancePool, XmlLoadable

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

Version:
$Revision: 57209 $
Author:
Rickard Oberg, Marc Fleury, Andreas Schaefer, Sacha Labourey, Scott Stark/a>, Dimitris Andreadis

Field Summary
protected  Container container
          The Container the instance pool is associated with
protected  int maxSize
          The maximum number of instances allowed in the pool
protected  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
log, server, SERVICE_CONTROLLER_SIG, serviceName
 
Fields inherited from interface org.jboss.system.ServiceMBean
CREATE_EVENT, CREATED, DESTROY_EVENT, DESTROYED, FAILED, REGISTERED, START_EVENT, STARTED, STARTING, states, STOP_EVENT, STOPPED, STOPPING, UNREGISTERED
 
Fields inherited from interface org.jboss.ejb.AllowedOperationsFlags
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
 
Constructor Summary
AbstractInstancePool()
           
 
Method Summary
 void clear()
          Clear the pool - does not remove inuse contexts
protected abstract  EnterpriseContext create(Object instance)
           
protected  void destroyService()
           
 void discard(EnterpriseContext ctx)
          Discard an anonymous instance after invocation.
 void free(EnterpriseContext ctx)
          Return an instance after invocation.
 EnterpriseContext get()
          Get an instance without identity.
 long getAvailableCount()
          Get the current avaiable count from the strict max view.
 Container getContainer()
           
 int getCurrentSize()
          Return the size of the pool.
 int getMaxSize()
          Get the maximum size of the pool.
 void importXml(Element element)
          XmlLoadable implementation
 void setContainer(Container c)
          Set the callback to the container.
 
Methods inherited from class org.jboss.system.ServiceMBeanSupport
create, createService, destroy, getDeploymentInfo, 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
addNotificationListener, getNotificationInfo, handleNotification, nextNotificationSequenceNumber, 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.ServiceMBean
getName, getState, getStateString, jbossInternalLifecycle
 
Methods inherited from interface org.jboss.system.Service
create, destroy, start, stop
 
Methods inherited from interface org.jboss.system.Service
create, destroy, start, stop
 

Field Detail

container

protected Container container
The Container the instance pool is associated with


pool

protected 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 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
Parameters:
c -

getContainer

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

getCurrentSize

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

Specified by:
getCurrentSize in interface InstancePool
Specified by:
getCurrentSize in interface AbstractInstancePoolMBean
Returns:
the current pool size

getMaxSize

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

Specified by:
getMaxSize in interface InstancePool
Specified by:
getMaxSize in interface AbstractInstancePoolMBean
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.

Specified by:
getAvailableCount in interface AbstractInstancePoolMBean
Returns:
the current avaiable count from the strict max view

clear

public void clear()
Description copied from interface: AbstractInstancePoolMBean
Clear the pool - does not remove inuse contexts

Specified by:
clear in interface AbstractInstancePoolMBean

get

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

Specified by:
get in interface InstancePool
Returns:
Context /w instance
Throws:
RemoteException
Exception - RemoteException

free

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

Specified by:
free in interface InstancePool
Parameters:
ctx -

discard

public void discard(EnterpriseContext ctx)
Description copied from interface: InstancePool
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
Parameters:
ctx - The context to discard.

importXml

public void importXml(Element element)
               throws org.jboss.deployment.DeploymentException
XmlLoadable implementation

Specified by:
importXml in interface XmlLoadable
Throws:
org.jboss.deployment.DeploymentException

create

protected abstract EnterpriseContext create(Object instance)
                                     throws Exception
Throws:
Exception

destroyService

protected void destroyService()
                       throws Exception
Overrides:
destroyService in class org.jboss.system.ServiceMBeanSupport
Throws:
Exception


Copyright © 2002 JBoss Group, LLC. All Rights Reserved.