On every project I never fail to be surprised at how little supposedly experienced J2EE developers actually know. This week I found myself asking team members if they actually had read the EJB specification and the answer came back a resounding 'No!'.
It seems that all too often when people are learning J2EE and EJBs in particular, they go and look at the specifications with a beginner's eye and form the impression that the specification documents are dense and impenetrable. They never go back with a more experienced eye and have another go. When I went back and re-read the specifications half way through my first J2EE project I suddenly realised that they were really useful and were packed full of vital information that allowed me to treat J2EE more as a science than as the black art practiced by so many.
The misconception that I want to address with this post is around Container Managed Transactions (CMTs). Let me ask you a question and please be sure what you think your answer is before you move on.
In what circumstances do CMTs roll back?
Take a second or two.
The answer that I usually get is: 'When an exception is thrown.'
Trouble is, the answer is sort of wrong.
The correct answer is: 'When an unchecked exception is thrown out of the transaction context or when EjbContext.setRollbackOnly() is called.'
What many of the developers I talk to fail to realise is that checked exceptions do not roll the transaction back.
So did you get the right answer?
2 comments:
Checked exceptions do rollback transactions, if they are instances of RemoteException.
Meeraj :-)
Checked exceptions do rollback transactions, if they are instances of remote exceptions.
Meeraj :-)
Post a Comment