2009-10-16 2 views
1

У меня есть ситуация, когда у меня есть дерево Entities и Session Bean. Session Bean просто сохраняет или объединяет сущности, и этот метод помечен как @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW).EJB3/DB2 Операции, не откатывающиеся назад

Теперь в случае, если дочерний объект не может быть сохранен/скомпонован из-за (например) нарушения внешнего ключа или отсутствия поля с недействительным значением, транзакция помечена в журналах, подлежащих откату, и EJBException брошен. Я ожидал, что вся транзакция будет отменена, но вместо этого я вижу родительский объект, появляющийся в базе данных после возврата вызова bean-компонента сеанса EJB, несмотря на сбой дочернего объекта.

Неужели кто-нибудь еще видел подобное поведение? Дополнительная информация:

Server: Glassfish 
Persistence manager: Toplink 
Connection Pool: DB2 Universal Driver XA compliant driver. 

Спасибо.

+0

Можете ли вы показать код, который выдает исключение? –

ответ

2

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