Executing SmooksAction might lead to throwing SmooksException in the process. If the environment is transacted (JCA is used), the service is always rollbacked and message returned to the queue. This is not correct behaviour often, since Smooks throws SmooksException for example in case of SAXParseException. That processed file is broken and will not work in the subsequent phases either. Writing any database log for example of happening is impossible since that would be rollbacked as well.
All SmooksException should be checked whether they should be rollbacked or not (or just never rollback them, throw them as checked exceptions).