org.jboss.ejb.plugins
Class EntityInstanceInterceptor

java.lang.Object
  extended byorg.jboss.ejb.plugins.AbstractInterceptor (src) 
      extended byorg.jboss.ejb.plugins.EntityInstanceInterceptor
All Implemented Interfaces:
AllowedOperationsFlags (src) , ContainerPlugin (src) , Interceptor (src) , Service (src)

public class EntityInstanceInterceptor
extends AbstractInterceptor (src)

The instance interceptors role is to acquire a context representing the target object from the cache.

This particular container interceptor implements pessimistic locking on the transaction that is associated with the retrieved instance. If there is a transaction associated with the target component and it is different from the transaction associated with the Invocation coming in then the policy is to wait for transactional commit.

We also implement serialization of calls in here (this is a spec requirement). This is a fine grained notify, notifyAll mechanism. We notify on ctx serialization locks and notifyAll on global transactional locks.

WARNING: critical code, get approval from senior developers before changing.


Field Summary
protected  EntityContainer (src) container
           
protected static java.lang.reflect.Method ejbTimeout
          A reference to TimedObject.ejbTimeout(javax.ejb.Timer).
 
Fields inherited from class org.jboss.ejb.plugins.AbstractInterceptor (src)
log, nextInterceptor
 
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
 
Constructor Summary
EntityInstanceInterceptor()
           
 
Method Summary
 Container (src) getContainer()
           
 java.lang.Object invoke(Invocation (src)  mi)
          ???
 java.lang.Object invokeHome(Invocation (src)  mi)
          ???
 void setContainer(Container (src)  container)
          This callback is set by the container so that the plugin may access it
 
Methods inherited from class org.jboss.ejb.plugins.AbstractInterceptor (src)
create, destroy, getNext, setNext, start, stop
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

container

protected EntityContainer (src)  container

ejbTimeout

protected static final java.lang.reflect.Method ejbTimeout
A reference to TimedObject.ejbTimeout(javax.ejb.Timer).

Constructor Detail

EntityInstanceInterceptor

public EntityInstanceInterceptor()
Method Detail

setContainer

public void setContainer(Container (src)  container)
Description copied from interface: ContainerPlugin (src)
This callback is set by the container so that the plugin may access it

Specified by:
setContainer in interface ContainerPlugin (src)
Overrides:
setContainer in class AbstractInterceptor (src)

getContainer

public Container (src)  getContainer()
Overrides:
getContainer in class AbstractInterceptor (src)

invokeHome

public java.lang.Object invokeHome(Invocation (src)  mi)
                            throws java.lang.Exception
Description copied from interface: Interceptor (src)
???

Specified by:
invokeHome in interface Interceptor (src)
Overrides:
invokeHome in class AbstractInterceptor (src)
Throws:
java.lang.Exception

invoke

public java.lang.Object invoke(Invocation (src)  mi)
                        throws java.lang.Exception
Description copied from interface: Interceptor (src)
???

Specified by:
invoke in interface Interceptor (src)
Overrides:
invoke in class AbstractInterceptor (src)
Throws:
java.lang.Exception