Как регистрировать содержимое транзакции Spring

Были различные сообщения о регистрации активности (запуск, фиксация и откат) диспетчера транзакций Spring. Однако недавно я столкнулся с проблемой тупика, для которой недостаточно вести журнал только активности.

Основная проблема в нашем коде - беспорядочное использование транзакций REQUIRED и REQUIRES_NEW. Существует так много вызовов методов взад и вперед, что мы получаем много транзакций, накладываемых друг на друга. Увы, кодовая база огромна, а решение необходимо срочно ... (Мы все знаем, что это такое.)

Проблема заключалась в тупике, потому что код был добавлен к объектам запроса в транзакции, которые были последовательно изменены в другой транзакции . Spring выдает исключение, сообщающее, что время обновления объекта X истекло, потому что оно заблокировано. Знать, что это приятно, но как найти ошибочный код: запрос, который выполняет раннюю блокировку.

Мой вопрос (наконец): есть ли способ регистрировать объекты, добавляемые к транзакции? Таким образом, я могу специально искать транзакции, блокирующие объект, на который жалуется Spring.

Спасибо! : -)

7
задан Jan Goyvaerts 7 September 2010 в 07:24
поделиться