Hi Ratnadeep,
You are catching your checked exception and hence why your transaction is not rolling back.
The HTTP status code returned from your action will not affect the state of your transaction at all.
If this is not what you want, as per Magazord's first suggestion, you can write your own action composition to handle transactions.
I believe Megazord's second suggestion was that if an exception was caught, that you return an error response code to the client and the client would then have to deal with the consequences.
I.e. Nothing to do with transactionality but more of a design decision.
Cheers