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

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

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


person Peter    schedule 14.09.2011    source источник


Ответы (1)


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

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

person jhouse    schedule 19.09.2011