Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.jboss.ejb.plugins
Class CleanShutdownInterceptor

    java.lang.Object
      org.jboss.ejb.plugins.AbstractInterceptor
          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 $

  Revisions:

  14 avril 2002 Sacha Labourey:

  - First implementation
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, 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

  Throws:
    `Exception`

### start

    public void start()
               throws Exception

  Throws:
    `Exception`

### stop

    public void stop()

### destroy

    public void destroy()

### invokeHome

    public Object invokeHome(org.jboss.invocation.Invocation mi)
                      throws Exception

  Throws:
    `Exception`

### invoke

    public Object invoke(org.jboss.invocation.Invocation mi)
                  throws Exception

  Throws:
    `Exception`

### getContainer

    public org.jboss.ejb.Container getContainer()

### setContainer

    public void setContainer(org.jboss.ejb.Container con)

  This callback is set by the container so that the plugin may access it

  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()

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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