Default Attributes in EJB Transactions

Viewed 12621

I ma reading the java ee docs and I would like to ask a couple of question to be sure I have understood well what is going on with EJB-Transactions.

1) The docs state that the defaalt TransactionManagement value is CONTAINER and the the default TransactionAttribute value is REQUIRED: If so, am I right that the following (Session) Bean executes all its methods in with CONTAINER managed Transactions and the attribute REQUIRED?

@Stateless
public class MyBean{

public void methodA(){
...
}

public void methodB(){
...
}

}

2) The docs state: Container-managed transactions do not require all methods to be associated with transactions. When developing a bean, you can set the transaction attributes to specify which of the bean’s methods are associated with transactions.

If I omit however the TransactionAttributeType, is it not automatically set to REQUIRED? Is the methodB in the following Bean not associated with a Transaction?

@Stateless
@TransactionManagement(CONTAINER)
public class MyBean{

@TransactionAttribute(MANDATORY)
public void methodA(){
...
}

public void methodB(){
...
}

}
3 Answers

1- Yes.

2- methodB() has REQUIRED attribute as it`s the default attribute, but you can override this default attribute with any other options like (NEVER, REQUIRED_NEW, SUPPORTED... etc).

However, the container still has the control to roll-back your transaction in case of system exception but you still have the ability to roll-back your transactions by invoking the setRollbackOnly method.

There are two ways to roll back a container-managed transaction. First, if a system exception is thrown, the container will automatically roll back the transaction. Second, by invoking the setRollbackOnly method of the EJBContext interface, the bean method instructs the container to roll back the transaction. If the bean throws an application exception, the rollback is not automatic but can be initiated by a call to setRollbackOnly.

https://docs.oracle.com/cd/E19798-01/821-1841/bnciv/index.html

Related