O'Reilly logo

Head First EJB by Bert Bates, Kathy Sierra

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Scenario Summary

Transaction Scenarios

A CMT bean calls context.getUserTransaction().

The bean gets an IllegalStateException. (Only BMT beans can get a UserTransaction)

Client calls remove() on a stateful bean that is still in an open transaction.

The client gets a RemoveException. You can’t remove a stateful bean while its in a transaction. (Which is just one of a gazillion reasons why it’s a Bad Idea to leave a transaction open across multiple client invocations. In other words, if you begin a BMT transaction in a method, you should end it in that method!)

A CMT bean calls getRollbackOnly(), from a method marked NotSupported.

The bean gets an IllegalStateException. You must be in a transaction when you call getRollbackOnly() or setRollbackOnly(). That means you can’t call them within a method marked NotSupported, Never, or Supports (session and entity beans) or NotSupported (message-driven beans—remember, message-driven beans can’t use Never or Supports, because they don’t make sense given that transactions can never propagate into a message-driven bean.)

Client calls a method on a Remote CMT bean, and the method is marked Mandatory. The caller does not have a transaction context in place when the call comes in.

The client gets a TransactionRequiredException (a local client would get TransactionRequiredLocalException).

A session bean wants the Container to know that the transaction should be rolled back and the bean should be killed.

The bean should throw an EJBException. The Container ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required