Let's say that this is a CMT bean. Transactions are scoped at method level for all CMT beans. When an application exception is thrown, the container is required by the EJB spec not to rollback the transaction. There are two ways to end a transaction: commit or rollback. So, the container must commit the transaction at the end of the method.