EJB3/DB2 Транзакции не откатываются
У меня есть ситуация, когда у меня есть дерево Entities
и Session Bean
, Session Bean
просто сохраняется или объединяет сущности, а рассматриваемый метод помечается как @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
,
Теперь в случае, если дочерняя сущность не может быть сохранена / объединена из-за (например) нарушения внешнего ключа или отсутствия необнуляемого поля, транзакция помечается в журналах для отката, и EJBException
выброшены. Я ожидал откат всей транзакции, но вместо этого я вижу, как родительский объект появляется в базе данных после возврата вызова EJB-сеанса, несмотря на сбой дочернего объекта.
Кто-нибудь еще видел такое поведение? Дополнительная информация:
Server: Glassfish
Persistence manager: Toplink
Connection Pool: DB2 Universal Driver XA compliant driver.
Благодарю.
1 ответ
Похоже, пул соединений в Glassfish был установлен с включенным флагом "Нетранзакционные соединения". Это было причиной отказа откатить.