Запись в журнал базы данных в середине отката - PullRequest
0 голосов
/ 17 января 2011

Я использую jboss5.1.x, ejb3.0

У меня есть транзакция, которая выглядит так: MDB слушает очередь JMS. MDB принимает сообщение из JMS для записи в базу данных.

в некоторых предложениях catch я выбрасываю «New EJBException (..)», чтобы иметь откаты при возникновении определенных исключений.

Кроме того, я настроил механизм повторных попыток, после 3-х раз сообщение отправляется в очередь ошибок.

То, чего я хочу достичь, это:

когда у меня возникает откат, я хочу увеличить текущий номер повторной попытки, поэтому, если some1 наблюдает за базой данных, он / она может видеть on-line текущий номер повторной попытки.

проблема в том, что когда я делаю откат, то даже сам запрос "insert_number_of_retry" откатывается, что не позволяет мне добавить текущий номер повторения в базу данных

как я могу решить это?

Спасибо

лучей.

Ответы [ 2 ]

1 голос
/ 17 января 2011

Вы можете попытаться выполнить свой метод регистрации внутри отдельной транзакции, пометив его как @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW).

0 голосов
/ 17 января 2011

Вам нужна отдельная транзакция в отдельном потоке (при необходимости вы можете использовать выделенный поток / пул или порождать один).У вас есть возможность дождаться окончания или потери разветвленной передачи (и просто продолжить с откатом и быстрым выходом), что зависит от дополнительной логики и т. Д.

...