Недавно рефакторинг какого-то кода встретил сценарий отката транзакций, когда один EJB-компонент звонил другому. Теперь в блоке исключения каждый компонент имеет свой контекст, который отмечен для отката.Транзакция по нескольким EJB
Является ли это хорошей практикой или они должны просто повторно выбрасывать исключение &, наконец, компонент инициатора выполняет только откат.
Кроме того, если на EJB имеется одиночная транзакция, тогда откат должен происходить в компоненте-отправителе или в случае возникновения исключения.
Тип транзакции JTA для сохранения с источником данных XA.
+1 Да, это очень специфичный дизайн. Но из-за некоторых сложных сценариев, не теряйте вещи где-то посередине. Кроме того, некоторые другие компоненты могут быть добавлены в будущий поток, а затем они должны отслеживать, что происходит с транзакцией до и после; поэтому думая, что каждый боб должен независимо управлять без внешней зависимости. Это скорее вопрос дизайна и практика. –
Еще один довольно распространенный подход, который я часто видел, заключается в том, чтобы перехватывать исключение на уровне bean и повторно вызывать исключение EJBException или настраиваемое исключение, расширяющее EJBException. Таким образом, вы все равно можете регистрировать то, что пошло не так, и получить выгоду от контейнера, возвращающего транзакцию. – Leonardo