Anu I think you are a little mistaken here.
REQUIRES_NEW doe not make a container hold its transaction. In fact the container starts the new transaction for the bean itself.
If you take a look at the spec, it says:
The Container must invoke a message-driven Bean method whose transaction attribute is set to Required with a valid transaction context. Because there is never a client transaction context available for a message-driven bean, the container automatically starts a new transaction before the dequeuing of the JMS message and, hence, before the invocation of the message-driven bean's onMessage(...) method.
If the container always starts a new transaction automatically, why the need of REQUIRED, why not REQUIRES_NEW?