com.sun.ejb.containers
Class StatefulSessionContainer

java.lang.Object
  extended by com.sun.ejb.containers.BaseContainer
      extended by com.sun.ejb.containers.StatefulSessionContainer
All Implemented Interfaces:
CacheListener, Container, SFSBContainerCallback, SFSBContainerInitialization, JavaEEContainer, EjbContainerFacade

public final class StatefulSessionContainer
extends BaseContainer
implements CacheListener, SFSBContainerCallback, SFSBContainerInitialization

This class provides container functionality specific to stateful SessionBeans. At deployment time, one instance of the StatefulSessionContainer is created for each stateful SessionBean type (i.e. deployment descriptor) in a JAR.

The 5 states of a Stateful EJB (an EJB can be in only 1 state at a time): 1. PASSIVE : has been passivated 2. READY : ready for invocations, no transaction in progress 3. INVOKING : processing an invocation 4. INCOMPLETE_TX : ready for invocations, transaction in progress 5. DESTROYED : does not exist

Author:
Mahesh Kannan

Nested Class Summary
 
Nested classes/interfaces inherited from class com.sun.ejb.containers.BaseContainer
BaseContainer.ContainerType
 
Field Summary
static int MIN_PASSIVATION_BATCH_COUNT
           
 
Fields inherited from class com.sun.ejb.containers.BaseContainer
cacheProbeListener, cacheProbeNotifier, callFlowInfo, cmtTimeoutInSeconds, componentId, CONTAINER_INITIALIZING, CONTAINER_ON_HOLD, CONTAINER_STARTED, CONTAINER_STOPPED, CONTAINER_UNDEPLOYED, containerInfo, containerState, containerType, debugMonitorFlag, ejbActivateMethod, ejbClass, ejbContainerUtilImpl, ejbDescriptor, ejbGeneratedOptionalLocalBusinessIntfClass, ejbHome, ejbHomeImpl, ejbHomeStub, ejbIntfMethodInfo, ejbIntfMethods, ejbLocalBusinessHome, ejbLocalBusinessHomeImpl, ejbLocalHome, ejbLocalHomeImpl, ejbMethodStatsManager, ejbOptionalLocalBusinessHome, ejbOptionalLocalBusinessHomeImpl, ejbOptionalLocalBusinessHomeIntf, ejbPassivateMethod, ejbProbeListener, ejbProbeNotifier, ejbRemoteBusinessHome, ejbRemoteBusinessHomeImpl, ejbRemoteBusinessHomeStub, ejbRemoveMethod, ejbTimeoutMethod, envProps, hasLocalBusinessView, hasLocalHomeView, hasOptionalLocalBusinessView, hasRemoteBusinessView, hasRemoteHomeView, homeIntf, injectionManager, interceptorManager, invocationInfoMap, invocationManager, isEntity, isLocal, isMessageDriven, isRemote, isSession, isSingleton, isStatefulSession, isStatelessSession, isWebServiceEndpoint, lifecycleCallbackAnnotationClasses, loader, localBusinessHomeIntf, localBusinessIntfs, localHomeIntf, logParams, metadata, methodMonitorMap, monitorOn, namingManager, NO_PARAMS, optIntfClassLoader, poolProbeListener, registryMediator, remoteBusinessHomeIntf, remoteBusinessIntfInfo, remoteHomeRefFactory, remoteIntf, scheduleIds, securityManager, sfsbSerializedClass, SINGLETON_BEAN_POOL_PROP, timerProbeListener, timerProbeNotifier, transactionManager, webServiceEndpointIntf, webServiceInvocationInfoMap
 
Fields inherited from interface com.sun.ejb.Container
SEC_CHECKED, SEC_EXCLUDED, SEC_NOT_INITIALIZED, SEC_UNCHECKED, secAttrStrings, TX_BEAN_MANAGED, TX_MANDATORY, TX_NEVER, TX_NOT_INITIALIZED, TX_NOT_SUPPORTED, TX_REQUIRED, TX_REQUIRES_NEW, TX_SUPPORTS, txAttrStrings
 
Constructor Summary
StatefulSessionContainer(BaseContainer.ContainerType conType, EjbDescriptor desc, java.lang.ClassLoader loader)
           
StatefulSessionContainer(EjbDescriptor desc, java.lang.ClassLoader loader)
          This constructor is called from the JarManager when a Jar is deployed.
 
Method Summary
protected  EJBContextImpl _constructEJBContextImpl(java.lang.Object instance)
           
protected  java.lang.Object _constructEJBInstance()
           
 ComponentContext _getContext(EjbInvocation inv)
          Called from preInvoke which is called from the EJBObject for local and remote invocations.
 void activateEJB(java.lang.Object sessionKey, StatefulEJBContext sfsbCtx, java.lang.Object cookie)
           
 boolean canPassivateEJB(ComponentContext context)
           
 void decrementMethodReadyStat()
           
protected  void doConcreteContainerShutdown(boolean appBeingUndeployed)
          *****************************************************************
 org.glassfish.ha.store.api.BackingStore<java.io.Serializable,org.glassfish.ha.store.util.SimpleMetadata> getBackingStore()
           
 int getMaxCacheSize()
           
 long getMethodReadyCount()
           
 java.lang.String getMonitorAttributeValues()
           
protected  EjbMonitoringStatsProvider getMonitoringStatsProvider(java.lang.String appName, java.lang.String modName, java.lang.String ejbName)
           
 int getPassivationBatchCount()
           
 long getPassiveCount()
           
protected  java.lang.String[] getPre30LifecycleMethodNames()
           
 void incrementMethodReadyStat()
           
protected  void initializeHome()
          Called from the ContainerFactory during initialization.
 void invokePeriodically(long delay, long periodicity, java.lang.Runnable target)
           
 boolean isHAEnabled()
           
protected  void loadCheckpointInfo()
           
 javax.persistence.EntityManager lookupExtendedEntityManager(javax.persistence.EntityManagerFactory emf)
          Containers that allow extended EntityManager will override this method.
 void onUndeploy(StatefulEJBContext sfsbCtx)
           
 boolean passivateEJB(ComponentContext context)
           
 boolean passivateEJB(StatefulEJBContext sfsbCtx)
           
 void postInvokeTx(EjbInvocation inv)
          postInvokeTx is called after every invocation on the EJB instance, including ejbCreate/ejbFind---/ejbRemove.
protected  void registerMonitorableComponents()
           
 void releaseContext(EjbInvocation inv)
          Called from preInvoke which is called from the EJBObject for local and remote invocations.
 void removeExpiredSessions()
           
 void removeTimedoutBean(EJBContextImpl ctx)
           
 void setBackingStore(org.glassfish.ha.store.api.BackingStore<java.io.Serializable,org.glassfish.ha.store.util.SimpleMetadata> store)
           
 void setCheckpointPolicy(CheckpointPolicy policy)
           
 void setPassivationBatchCount(int count)
           
 void setRemovalGracePeriodInSeconds(int val)
           
 void setSessionCache(LruSessionCache cache)
           
 void setSfsbHaPersistenceType(java.lang.String val)
           
 void setSFSBUUIDUtil(SFSBUUIDUtil util)
           
 void setSFSBVersionManager(SFSBVersionManager sfsbVersionManager)
           
 void trimEvent(java.lang.Object primaryKey, java.lang.Object context)
           
 void undeploy(SessionContextImpl ctx)
           
 boolean userTransactionMethodsAllowed(ComponentInvocation inv)
          EJB spec makes a distinction between access to the UserTransaction object itself and access to its methods.
 
Methods inherited from class com.sun.ejb.containers.BaseContainer
addSchedule, assertValidLocalObject, assertValidRemoteObject, authorize, checkExceptionClientTx, checkUnfinishedTx, checkUserTransactionLookup, cleanupInstance, containerStateToString, createCallFlowAgent, createEjbInstanceAndContext, createMonitoringRegistryMediator, createRemoteReferenceWithId, doAfterBegin, doEJBHomeRemove, doFlush, enlistExtendedEntityManagers, externalPostInvoke, externalPreInvoke, findFlushEnabledAttr, findTxAttr, getClassLoader, getComponentId, getContainerClassLoader, getContainerType, getContext, getDebugMonitorFlag, getDescriptor, getEJBClass, getEjbDescriptor, getEJBHome, getEJBHomeStub, getEJBLocalBusinessHome, getEJBLocalHome, getEJBLocalObjectForPrimaryKey, getEJBLocalObjectForPrimaryKey, getEJBMetaData, getEJBObjectForPrimaryKey, getJaccEjb, getJavaGlobalJndiNamePrefix, getMonitoringMethodsArray, getMonitoringMethodsArray, getProtocolManager, getSecurityManager, getTargetObject, getTxAttr, getTxAttr, incrementCreatedTimedObject, incrementDeliveredTimedObject, incrementRemovedTimedObject, injectEjbInstance, instantiateEJBLocalBusinessObjectImpl, instantiateEJBLocalObjectImpl, instantiateEJBObjectImpl, instantiateOptionalEJBLocalBusinessObjectImpl, instantiateRemoteBusinessObjectImpl, invokeBeanMethod, isAppExceptionRequiringRollback, isApplicationException, isLocalInterfaceSupported, isRemoteInterfaceSupported, isStopped, isSystemUncheckedException, isTimedObject, isUndeployed, onReady, onShutdown, onTermination, populateMethodMonitorMap, populateMethodMonitorMap, populateMethodMonitorMap, postCreate, postFind, postInvoke, postInvoke, postProcessInvocationInfo, preInitialize, preInvoke, preInvokeTx, preSelect, registerTimerMonitorableComponent, registerTxAttrForMethod, releaseTargetObject, removeBeanUnchecked, removeBeanUnchecked, setDebugMonitorFlag, setMonitorOn, setSecurityManager, setStartedState, setStoppedState, setUndeployedState, startApplication, toString, undeploy, useClientTx, webServicePostInvoke
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.sun.ejb.spi.container.SFSBContainerCallback
getClassLoader
 

Field Detail

MIN_PASSIVATION_BATCH_COUNT

public static final int MIN_PASSIVATION_BATCH_COUNT
See Also:
Constant Field Values
Constructor Detail

StatefulSessionContainer

public StatefulSessionContainer(EjbDescriptor desc,
                                java.lang.ClassLoader loader)
                         throws java.lang.Exception
This constructor is called from the JarManager when a Jar is deployed.

Throws:
java.lang.Exception - on error

StatefulSessionContainer

public StatefulSessionContainer(BaseContainer.ContainerType conType,
                                EjbDescriptor desc,
                                java.lang.ClassLoader loader)
                         throws java.lang.Exception
Throws:
java.lang.Exception
Method Detail

initializeHome

protected void initializeHome()
                       throws java.lang.Exception
Description copied from class: BaseContainer
Called from the ContainerFactory during initialization.

Throws:
java.lang.Exception

loadCheckpointInfo

protected void loadCheckpointInfo()

registerMonitorableComponents

protected void registerMonitorableComponents()
Overrides:
registerMonitorableComponents in class BaseContainer

getMonitorAttributeValues

public java.lang.String getMonitorAttributeValues()

getMonitoringStatsProvider

protected EjbMonitoringStatsProvider getMonitoringStatsProvider(java.lang.String appName,
                                                                java.lang.String modName,
                                                                java.lang.String ejbName)
Specified by:
getMonitoringStatsProvider in class BaseContainer

_constructEJBContextImpl

protected EJBContextImpl _constructEJBContextImpl(java.lang.Object instance)
Overrides:
_constructEJBContextImpl in class BaseContainer

_constructEJBInstance

protected java.lang.Object _constructEJBInstance()
                                          throws java.lang.Exception
Overrides:
_constructEJBInstance in class BaseContainer
Throws:
java.lang.Exception

lookupExtendedEntityManager

public javax.persistence.EntityManager lookupExtendedEntityManager(javax.persistence.EntityManagerFactory emf)
Description copied from class: BaseContainer
Containers that allow extended EntityManager will override this method.

Specified by:
lookupExtendedEntityManager in interface JavaEEContainer
Overrides:
lookupExtendedEntityManager in class BaseContainer

userTransactionMethodsAllowed

public boolean userTransactionMethodsAllowed(ComponentInvocation inv)
Description copied from class: BaseContainer
EJB spec makes a distinction between access to the UserTransaction object itself and access to its methods. getUserTransaction covers the first check and this method covers the second. It is called by the UserTransaction implementation to verify access.

Specified by:
userTransactionMethodsAllowed in interface Container
Overrides:
userTransactionMethodsAllowed in class BaseContainer

removeTimedoutBean

public void removeTimedoutBean(EJBContextImpl ctx)

_getContext

public ComponentContext _getContext(EjbInvocation inv)
Called from preInvoke which is called from the EJBObject for local and remote invocations.

Specified by:
_getContext in class BaseContainer

isHAEnabled

public boolean isHAEnabled()
Overrides:
isHAEnabled in class BaseContainer

postInvokeTx

public void postInvokeTx(EjbInvocation inv)
                  throws java.lang.Exception
Description copied from class: BaseContainer
postInvokeTx is called after every invocation on the EJB instance, including ejbCreate/ejbFind---/ejbRemove. NOTE: postInvokeTx is called even if the EJB was not invoked because of an exception thrown from preInvokeTx.

Overrides:
postInvokeTx in class BaseContainer
Throws:
java.lang.Exception

releaseContext

public void releaseContext(EjbInvocation inv)
Called from preInvoke which is called from the EJBObject for local and remote invocations.

Specified by:
releaseContext in class BaseContainer

canPassivateEJB

public final boolean canPassivateEJB(ComponentContext context)

passivateEJB

public final boolean passivateEJB(ComponentContext context)

getPassivationBatchCount

public final int getPassivationBatchCount()
Specified by:
getPassivationBatchCount in interface SFSBContainerCallback

setPassivationBatchCount

public final void setPassivationBatchCount(int count)

passivateEJB

public final boolean passivateEJB(StatefulEJBContext sfsbCtx)
Specified by:
passivateEJB in interface SFSBContainerCallback

getMethodReadyCount

public long getMethodReadyCount()

getPassiveCount

public long getPassiveCount()

activateEJB

public void activateEJB(java.lang.Object sessionKey,
                        StatefulEJBContext sfsbCtx,
                        java.lang.Object cookie)
Specified by:
activateEJB in interface SFSBContainerCallback

invokePeriodically

public void invokePeriodically(long delay,
                               long periodicity,
                               java.lang.Runnable target)
Specified by:
invokePeriodically in interface SFSBContainerCallback

onUndeploy

public void onUndeploy(StatefulEJBContext sfsbCtx)

getPre30LifecycleMethodNames

protected java.lang.String[] getPre30LifecycleMethodNames()
Overrides:
getPre30LifecycleMethodNames in class BaseContainer

setSfsbHaPersistenceType

public void setSfsbHaPersistenceType(java.lang.String val)

doConcreteContainerShutdown

protected void doConcreteContainerShutdown(boolean appBeingUndeployed)
*****************************************************************

Specified by:
doConcreteContainerShutdown in class BaseContainer

undeploy

public void undeploy(SessionContextImpl ctx)

trimEvent

public void trimEvent(java.lang.Object primaryKey,
                      java.lang.Object context)
Specified by:
trimEvent in interface CacheListener

setSFSBUUIDUtil

public void setSFSBUUIDUtil(SFSBUUIDUtil util)
Specified by:
setSFSBUUIDUtil in interface SFSBContainerInitialization

setCheckpointPolicy

public void setCheckpointPolicy(CheckpointPolicy policy)
Specified by:
setCheckpointPolicy in interface SFSBContainerInitialization

setSessionCache

public void setSessionCache(LruSessionCache cache)

setRemovalGracePeriodInSeconds

public void setRemovalGracePeriodInSeconds(int val)
Specified by:
setRemovalGracePeriodInSeconds in interface SFSBContainerInitialization

removeExpiredSessions

public void removeExpiredSessions()

setSFSBVersionManager

public void setSFSBVersionManager(SFSBVersionManager sfsbVersionManager)
Specified by:
setSFSBVersionManager in interface SFSBContainerInitialization

getMaxCacheSize

public int getMaxCacheSize()

getBackingStore

public org.glassfish.ha.store.api.BackingStore<java.io.Serializable,org.glassfish.ha.store.util.SimpleMetadata> getBackingStore()
Specified by:
getBackingStore in interface SFSBContainerInitialization

setBackingStore

public void setBackingStore(org.glassfish.ha.store.api.BackingStore<java.io.Serializable,org.glassfish.ha.store.util.SimpleMetadata> store)
Specified by:
setBackingStore in interface SFSBContainerInitialization

incrementMethodReadyStat

public void incrementMethodReadyStat()

decrementMethodReadyStat

public void decrementMethodReadyStat()


Copyright © 2012 GlassFish Community. All Rights Reserved.