This week's giveaway is in the Android forum.
We're giving away four copies of Android Security Essentials Live Lessons and have Godfrey Nolan on-line!
See this thread for details.
The moose likes EJB and other Java EE Technologies and the fly likes How to Catch Exception Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Java » EJB and other Java EE Technologies
Bookmark "How to Catch Exception " Watch "How to Catch Exception " New topic

How to Catch Exception

dinesh thalis
Ranch Hand

Joined: Nov 19, 2008
Posts: 39
I'm using EJB3. As usual, i'll use the EntityManager's API to do CRUD operation, such as, em.persist(), em.merge() etc.

So now I want to catch exception while performing em.persist() and do my own thing.

If I used @TransactionManagement(TransactionManagementType.BEAN) I can handle exception below show my code.

Problem is if I use @TransactionManagement(TransactionManagementType.CONTAINER) I can't catch exception, I used same code( display above), how can I overcome this problem.

If you can provide more details about exception handling in EJB3( reference link) it's more helpful to me.
Rodrigo Lazoti

Joined: Mar 13, 2009
Posts: 9
You can handle/catch exceptions in BMT or CMT Enterprise Beans.
See the links below more about transactions and handling of exceptions:

And I recommend you check the specs:

Best Regards!

Rodrigo Lazoti.
Rodrigo Lazoti

Joined: Mar 13, 2009
Posts: 9
duplicate message. sorry...
Yair Ivan

Joined: Jul 13, 2008
Posts: 15


Thanks Rodrigo for information.

I add the following items:

- In EJB 3 in Action section 6.2.5 Transaction and exception handling.
- In Entreprise JavaBeans 3.0 (O┬┤Relly) Section 16.6 Exceptions and Transactions.


SCJP 6.0, SCBCD 5.0, SCDJWS 5.0
dinesh thalis
Ranch Hand

Joined: Nov 19, 2008
Posts: 39
I read this tutorials but still I'm fail

I'm using container manager transaction and persist account details. if some body try to persist incorrect account information I want to give customer exception(message) instead of system generated message. Above code show that but this not work. please help me how to it?
Jaikiran Pai

Joined: Jul 20, 2005
Posts: 9953

With CMT, the actual queries are fired on transaction completion, i.e. after the method exits. So the catch block will never be able to catch such exceptions which happen within a transaction synchronization callback. You'll see the difference if you add a em.flush after the em.persist. That way, the queries will be fired immediately instead of waiting for tx synchronization:

[My Blog] [JavaRanch Journal]
dinesh thalis
Ranch Hand

Joined: Nov 19, 2008
Posts: 39
Below show how I try to handle this issue. Is it write or wrong. Using this way I can succeed some extend, Is there any suggestion regarding this.

I agree. Here's the link:
subject: How to Catch Exception
Similar Threads
JTA Application Managed EntityManager question
How do I specify that an Session Bean is BMT using annotations?
java.lang.IllegalStateException: Exception Description: Cannot use an EntityTransaction while using
EJB3 noob and User Managed Transaction
question about application-managed Entity manager