As per section 5.4.17 of EJB 3.0 Core specification, a message-driven bean’s message listener method must not throw the java.rmi.RemoteException. It can throw any other exception. If it throws an application exception, the transaction (if any) is rolled back, the exception is rethrown to the resource adapter, and the bean is NOT discarded. If it throws a system exception, the exception is logged, the transaction (if any) is rolledback, and the bean is discarded.
The bold line says, for application exception thrown, if there is transaction it will be rolled back. I don't find any such line in the specifications.
The spec.'s simply says-
The message listener methods of some messaging types may throw application exceptions. An application
exception is propagated by the container to the resource adapter.
Did they added this line on their own even mentioning it is from specif. or they the spec. got updated?