2012-01-19 3 views
2

Я получаю следующее сообщение Spring Framework сообщение об ошибке:Почему я получаю SpringFramework UnexpectedRollbackException?

Invocation of getLogoForGlobalConext() in class $Proxy44 threw exception 
org.springframework.transaction.UnexpectedRollbackException: 
Transaction rolled back because it has been marked as rollback-only 
at template/includes/macros.vm line 1651, column 43 

Я открыл macros.vm и посмотрел на линию 1651 и это выглядит следующим образом:

#set ($globalLogo = $spaceManager.getLogoForGlobalContext()); 

Из моих исследований это выглядит $Proxy44 на самом деле $spaceManager переменная (или экземпляр DefaultSpaceManager.java).

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

attachmentmanager регулируется Управление транзакциями Spring и следующие атрибуты транзакции используются, когда изображение/Вложение будет загружено:

1) распространение - для всех методов в менеджере крепления

2) распространения и только для чтения - для всех методов в менеджере вложений, начиная с «get».

Атрибуты определяются здесь: http://static.springsource.org/spring/docs/2.0.x/reference/transaction.html

То, что я имею в виду, мне нужно, чтобы установить тайм-аут по сделкам (например, установить его на бесконечность).

Понравился бы все или любой из ваших советов. Я вознагражу очки, если ваш ответ поможет в любом случае!

ответ

2

Оказывается, один из методов getter выполняет запись в базу данных. В частности, он обновлял кеш с некоторой информацией каждые несколько минут. Когда это обновление произошло, был выброшен UnexpectedRollbackException. Так как эта транзакция должна быть «только для чтения», как определено указанными выше атрибутами транзакции, нам не разрешается выполнять обновления во время операции getter.

Я изменил метод getter, чтобы не выполнять никаких обновлений кеша, и просто использовать кеш, даже если он истек, и ошибка исчезнет.

Надеюсь, это поможет кому-то еще.

 Смежные вопросы

  • Нет связанных вопросов^_^