Почему Quartz Scheduler (JobSToreCMT) требует использования двух источников данных? - PullRequest
5 голосов
/ 15 сентября 2011

Я нашел этот ответ: 1. Длинный ответ на Quartz, требующийся от источников данных, однако, если вам нужен еще более глубокий ответ, я считаю, что мне нужно будет покопаться в исходном коде или провести дополнительные исследования: а. JobStoreCMT полагается на транзакции, управляемые приложением, которое использует Quartz. JTA-транзакция должна выполняться перед попыткой запланировать (или не запланировать) задания / триггеры. Это позволяет «работе» планирования быть частью приложения «более крупной» транзакции. JobStoreCMT фактически требует использования двух источников данных - один, который имеет транзакции своего соединения, управляемые сервером приложений (через JTA), и один источник данных, который имеет соединения, которые не участвуют в глобальных (JTA) транзакциях. JobStoreCMT подходит, когда приложения используют транзакции JTA (например, через сессионные компоненты EJB) для выполнения своей работы. (Ссылка http://quartz -scheduler.org / документация / quartz-1.x / configuration / ConfigJobStoreCMT )

Однако в нашем конкретном приложении есть конфликт с драйвером без транзакций. Кто-нибудь знает, может ли Quartz (JobsStoreCMT) просто работать только с транзакционным источником данных?

1 Ответ

4 голосов
/ 19 сентября 2011

Кто-нибудь знает, может ли Quartz (JobsStoreCMT) просто работать только с транзакционным источником данных?

Нет, у вас должен быть источник данных каждого типа.При вызовах API клиентским приложением используются соединения, поддерживающие XA, поэтому рабочее присоединение является транзакцией приложения.Работа, выполняемая внутренними потоками планировщика, использует соединения не-XA.

...