Лично я никогда не выполняю никакой работы в MDB, но немедленно отправляю (вставленный) сессионный компонент.
Этот компонент затем выполняет работу БД.Он либо запускает новую транзакцию, либо я перехватываю любое исключение из компонента и регистрирую его (но не позволяю ему распространяться, поэтому повторной доставки не требуется).
Это также имеет то преимущество, что бизнес-логику можно легко использовать повторно.из других мест.