org.jboss.ejb.plugins
Class TxInterceptorCMT

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

public class TxInterceptorCMT
extends AbstractInterceptor
implements XmlLoadable

This interceptor handles transactions for CMT beans.

Version:
$Revision: 57209 $
Author:
Rickard �berg, Marc Fleury, Sebastien Alborini, Anatoly Akkerman, Ole Husgaard, Bill Burke

Field Summary
protected static Method ejbTimeout
          A reference to TimedObject.ejbTimeout(javax.ejb.Timer).
static int MAX_RETRIES
           
static Random random
           
protected  TransactionManager tm
          Local reference to the container's TransactionManager.
 
Fields inherited from class org.jboss.ejb.plugins.AbstractInterceptor
container, 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
TxInterceptorCMT()
           
 
Method Summary
protected  void checkTransactionStatus(Transaction tx, InvocationType type)
          The application has not thrown an exception, but...
 void create()
           
 void importXml(Element ielement)
           
 Object invoke(Invocation invocation)
          This method does invocation interpositioning of tx management
 Object invokeHome(Invocation invocation)
          ???
protected  Object invokeNext(Invocation invocation, boolean inheritedTx)
          This method calls the next interceptor in the chain.
static org.jboss.util.deadlock.ApplicationDeadlockException isADE(Throwable t)
          Detects exception contains is or a ApplicationDeadlockException.
 void resetStatistic()
           
 Map retrieveStatistic()
           
 void sample(Object s)
           
protected  void throwJBossException(Exception e, InvocationType type)
          Rethrow the exception as a rollback or rollback local
 
Methods inherited from class org.jboss.ejb.plugins.AbstractInterceptor
destroy, getContainer, getNext, isAppException, setContainer, setNext, start, stop
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MAX_RETRIES

public static int MAX_RETRIES

random

public static Random random

ejbTimeout

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


tm

protected TransactionManager tm
Local reference to the container's TransactionManager.

Constructor Detail

TxInterceptorCMT

public TxInterceptorCMT()
Method Detail

isADE

public static org.jboss.util.deadlock.ApplicationDeadlockException isADE(Throwable t)
Detects exception contains is or a ApplicationDeadlockException.


importXml

public void importXml(Element ielement)
Specified by:
importXml in interface XmlLoadable

create

public void create()
            throws Exception
Specified by:
create in interface org.jboss.system.Service
Throws:
Exception

invokeHome

public Object invokeHome(Invocation invocation)
                  throws Exception
Description copied from interface: Interceptor
???

Specified by:
invokeHome in interface Interceptor
Overrides:
invokeHome in class AbstractInterceptor
Parameters:
invocation - ???
Returns:
???
Throws:
Exception - ???

invoke

public Object invoke(Invocation invocation)
              throws Exception
This method does invocation interpositioning of tx management

Specified by:
invoke in interface Interceptor
Overrides:
invoke in class AbstractInterceptor
Parameters:
invocation - ???
Returns:
???
Throws:
Exception - ???

throwJBossException

protected void throwJBossException(Exception e,
                                   InvocationType type)
                            throws TransactionRolledbackException
Rethrow the exception as a rollback or rollback local

Parameters:
e - the exception
type - the invocation type
Throws:
TransactionRolledbackException

checkTransactionStatus

protected void checkTransactionStatus(Transaction tx,
                                      InvocationType type)
                               throws TransactionRolledbackException
The application has not thrown an exception, but... When exception-on-rollback is true, check whether the transaction is not active. If it did not throw an exception anyway.

Parameters:
tx - the transaction
type - the invocation type
Throws:
TransactionRolledbackException - if transaction is no longer active

sample

public void sample(Object s)

retrieveStatistic

public Map retrieveStatistic()

resetStatistic

public void resetStatistic()

invokeNext

protected Object invokeNext(Invocation invocation,
                            boolean inheritedTx)
                     throws Exception
This method calls the next interceptor in the chain.

All Throwables are caught and divided into two groups: application exceptions and system exceptions. Application exception are simply rethrown. System exceptions result in the transaction being marked for rollback only. If the transaction was not started by the container (i.e., it was inherited from the client) the system exception is wrapped in a TransactionRolledBack[Local]Exception.

Parameters:
invocation - The Invocation of this call.
inheritedTx - If true the transaction has just been started in this interceptor.
Throws:
Exception - if an exception occures in the interceptor chain. The actual exception throw is governed by the rules in the EJB 2.0 specification section 18.3


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