Spring.NET, Кварц и Транзакции - PullRequest
       27

Spring.NET, Кварц и Транзакции

0 голосов
/ 09 октября 2011

У меня только что возникла проблема с заданием Quartz, которое я вызываю через Spring.У моего ExecuteInternal метода был атрибут [Transaction] (потому что он выполняет загрузку вызовов БД), но когда он запускается, я получаю сообщение об ошибке «Нет привязанного к потоку сеанса NHibernate».

Интересно, это потому, что Spring.NET не поддерживает атрибут [Transaction] в кварцевых объектах?

Если нет, это нормально ... Я могу запустить транзакцию вручную, но хотел проверить, что это был случай, а не глупая ошибка в моей конфигурации где-то.

[Обновление] Я понял это на самом деле.В документации API говорится, что предпочтительный способ сделать это - использовать транзакции на уровне сервиса.Моя работа заключалась в использовании DAO для выполнения этой работы, но мои транзакции находятся на моем уровне обслуживания, поэтому я просто вызвал методы обслуживания из своей работы вместо того, чтобы выполнять ту же работу (сохранение, обновление записей и т. Д.), Поскольку они уже существуют.

Это также предполагает, что если вы дадите SchedulerFactoryObject объект DbProvider, вы сможете использовать транзакции в самом задании, но когда я это сделал, мне показалось, что я хочу найти мои триггеры, настроенные в специальной таблице в БД (чего я ненастроен так как все мои триггеры в XML), но, возможно, это еще один способ сделать это.

Хотя вызов методов службы мне подходит.

1 Ответ

2 голосов
/ 10 октября 2011

Атрибут транзакции работает с использованием aop.Spring.NET создает aop proxy для декорированного объекта.Этот прокси создает сеанс и запускает транзакцию.

В методе ExecuteInternal метод вызывается не на прокси-сервере, а на самой цели.Поэтому Spring не может перехватить вызов и выполнить магию транзакций.

Ваши услуги внедрены, и поэтому атрибут транзакции работает для них.

Весной есть хорошее объяснениедокументы на эту тему: http://www.springframework.net/doc-latest/reference/html/transaction.html#tx-understandingimpl

...