setRollbackOnly() lives in TWO interfaces

Note
Be SURE you know the rules for BOTH of the setRollbackOnly() methods!
Be ready for the exam to test you on the use of setRollbackOnly() for both BMT and CMT beans.
EJBContext.setRollbackOnly()
UserTransaction.setRollbackOnly()
Remember, no single bean can ever use BOTH of these!
CMT beans can use only the EJBContext.setRollbackOnly()
BMT beans can use only the UserTransaction.setRollbackOnly()
Expect to see code examples where you’ll need to figure out if the bean is BMT or CMT by looking at the code. And it won’t be as obvious as a call to getUserTransaction(). If you see a call to EJBContext.setRollbackOnly(), for example, you know that this must be a CMT bean. So if that same bean later starts a UserTransaction, you know the code is illegal.
The methods in the UserTransaction interface are for BMT beans only; CMT beans can’t use anything in UserTransaction.
The EJBContext interface, on the other hand, is for both BMT and CMT beans, except for the two transaction methods.
The setRollbackOnly() and getRollbackOnly() methods in EJBContext are off-limits to BMT beans.
Bottom line: BMT beans call setRollbackOnly() on a UserTransaction; CMT beans call setRollbackOnly() on an EJBContext.
Note
A bean that calls setRollbackOnly() MUST be in a transaction!
You can call setRollbackOnly() from a BMT bean ONLY if you’re inside a transaction. In other words, only ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access