org.jboss.ejb.plugins
Class CleanShutdownInterceptor

java.lang.Object
  extended by org.jboss.ejb.plugins.AbstractInterceptor
      extended by org.jboss.ejb.plugins.CleanShutdownInterceptor
All Implemented Interfaces:
org.jboss.ejb.AllowedOperationsFlags, org.jboss.ejb.ContainerPlugin, org.jboss.ejb.Interceptor, org.jboss.system.Service

public class CleanShutdownInterceptor
extends org.jboss.ejb.plugins.AbstractInterceptor

Track the incoming invocations and when shuting down a container (stop or destroy), waits for current invocations to finish before returning the stop or destroy call. This interceptor can be important in clustered environment where shuting down a node doesn't necessarly mean that an application cannot be reached: other nodes may still be servicing. Consequently, it is important to have a clean shutdown to keep a coherent behaviour cluster-wide. To avoid strange or inefficient behaviour, the facade session bean (if any) should be stopped first thus not blocking invocations in a middle-step (i.e. facade making multiple invocations to "sub-beans": if a "sub-bean" is shut down, the facade will get an exception in the middle of its activity)

Version:
$Revision: 1.9.6.1 $

Revisions:

14 avril 2002 Sacha Labourey:

Author:
Sacha Labourey.
See Also:

Field Summary
protected  boolean allowInvocations
           
protected  boolean allowRemoteInvocations
           
protected  org.jboss.ejb.Container container
           
protected  org.jboss.ejb.EjbModule ejbModule
           
protected  String ejbModuleName
           
protected  boolean isDebugEnabled
           
 long readAcquireTimeMs
           
 long runningHomeInvocations
           
 long runningInvocations
           
protected  EDU.oswego.cs.dl.util.concurrent.ReentrantWriterPreferenceReadWriteLock rwLock
           
 long shutdownTimeout
           
 
Fields inherited from class org.jboss.ejb.plugins.AbstractInterceptor
log, nextInterceptor
 
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
CleanShutdownInterceptor()
           
 
Method Summary
protected  void containerIsAboutToStop()
           
 void create()
           
 void destroy()
           
protected  void forbidInvocations()
           
 org.jboss.ejb.Container getContainer()
           
protected  String getOrigin(org.jboss.invocation.Invocation mi)
           
 Object invoke(org.jboss.invocation.Invocation mi)
           
 Object invokeHome(org.jboss.invocation.Invocation mi)
           
 void onlyAllowLocalInvocations()
           
protected  void purgeRunningInvocations()
           
protected  void revertOrigin(org.jboss.invocation.Invocation mi, String origin)
           
 void setContainer(org.jboss.ejb.Container con)
          This callback is set by the container so that the plugin may access it
protected  void setOrigin(org.jboss.invocation.Invocation mi)
           
 void start()
           
 void stop()
           
 void waitForNoMoreInvocations()
           
 
Methods inherited from class org.jboss.ejb.plugins.AbstractInterceptor
getNext, isAppException, setNext
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

container

protected org.jboss.ejb.Container container

ejbModule

protected org.jboss.ejb.EjbModule ejbModule

ejbModuleName

protected String ejbModuleName

allowInvocations

protected boolean allowInvocations

allowRemoteInvocations

protected boolean allowRemoteInvocations

isDebugEnabled

protected boolean isDebugEnabled

runningInvocations

public long runningInvocations

runningHomeInvocations

public long runningHomeInvocations

shutdownTimeout

public long shutdownTimeout

readAcquireTimeMs

public long readAcquireTimeMs

rwLock

protected EDU.oswego.cs.dl.util.concurrent.ReentrantWriterPreferenceReadWriteLock rwLock
Constructor Detail

CleanShutdownInterceptor

public CleanShutdownInterceptor()
Method Detail

onlyAllowLocalInvocations

public void onlyAllowLocalInvocations()

waitForNoMoreInvocations

public void waitForNoMoreInvocations()

create

public void create()
            throws Exception
Specified by:
create in interface org.jboss.system.Service
Overrides:
create in class org.jboss.ejb.plugins.AbstractInterceptor
Throws:
Exception

start

public void start()
           throws Exception
Specified by:
start in interface org.jboss.system.Service
Overrides:
start in class org.jboss.ejb.plugins.AbstractInterceptor
Throws:
Exception

stop

public void stop()
Specified by:
stop in interface org.jboss.system.Service
Overrides:
stop in class org.jboss.ejb.plugins.AbstractInterceptor

destroy

public void destroy()
Specified by:
destroy in interface org.jboss.system.Service
Overrides:
destroy in class org.jboss.ejb.plugins.AbstractInterceptor

invokeHome

public Object invokeHome(org.jboss.invocation.Invocation mi)
                  throws Exception
Specified by:
invokeHome in interface org.jboss.ejb.Interceptor
Overrides:
invokeHome in class org.jboss.ejb.plugins.AbstractInterceptor
Throws:
Exception

invoke

public Object invoke(org.jboss.invocation.Invocation mi)
              throws Exception
Specified by:
invoke in interface org.jboss.ejb.Interceptor
Overrides:
invoke in class org.jboss.ejb.plugins.AbstractInterceptor
Throws:
Exception

getContainer

public org.jboss.ejb.Container getContainer()
Overrides:
getContainer in class org.jboss.ejb.plugins.AbstractInterceptor

setContainer

public void setContainer(org.jboss.ejb.Container con)
This callback is set by the container so that the plugin may access it

Specified by:
setContainer in interface org.jboss.ejb.ContainerPlugin
Overrides:
setContainer in class org.jboss.ejb.plugins.AbstractInterceptor
Parameters:
con - The container using this plugin.

forbidInvocations

protected void forbidInvocations()

purgeRunningInvocations

protected void purgeRunningInvocations()

getOrigin

protected String getOrigin(org.jboss.invocation.Invocation mi)

setOrigin

protected void setOrigin(org.jboss.invocation.Invocation mi)

revertOrigin

protected void revertOrigin(org.jboss.invocation.Invocation mi,
                            String origin)

containerIsAboutToStop

protected void containerIsAboutToStop()


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