Seam rolls back any active transaction when an exception occurs and is uncaught in the Seam component layer so I expect that if code throws an ApplicationException, the transaction will be rolled back. However what happens is this:
The rollback interceptors check it. Because it is an application exception it doesn't rollback the transaction The SeamPhaseListener see a transaction and commit (status from 0 to 6) The exception filter sees the exception, but no transaction(status is 6) so do nothing.
We want the behavior describes in the doc, that is Application Exception rolls back the exception without having to change the exception code (not adding annotation to it).