Транзакции 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.

Спасибо.


person Anthony Roy    schedule 16.10.2009    source источник
comment
Можете ли вы показать код, который выдает исключение?   -  person Arthur Ronald    schedule 17.10.2009


Ответы (1)


Похоже, что пул соединений в Glassfish был установлен с включенным флагом «Нетранзакционные соединения». Это приводило к невозможности отката.

person Anthony Roy    schedule 19.10.2009