Проблема JNDI с Websphere 6 UserTrasaction и Quartz Scheduler
У меня есть веб-приложение, работающее на WebSphere 6.0, а также есть несколько задач Quartz Scheduler. Если я сделаю поиск в hibernate.cfg.xml:
<property name="jta.UserTransaction">java:comp/UserTransaction</property>
Он отлично работает с моим веб-приложением, но любые потоки, инициированные кварцевыми таймерами, не могут получить доступ к БД с помощью этой строки поиска. Но если я использую
<property name="jta.UserTransaction">jta/usertransaction</property>
Тогда это наоборот. Я получу кварцевые таймеры, но не смогу найти их в своем веб-приложении.
Есть ли способ заставить их работать с одинаковой конфигурацией гибернации?
EDT: вот мой файл quartz.properties. Кстати, версия Quartz 1.5.2.
org.quartz.scheduler.instanceName = TestScheduler
org.quartz.scheduler.instanceId = one
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
org.quartz.threadPool.threadPriority = 4
org.quartz.jobStore.misfireThreshold = 5000
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
2 ответа
Я не знаю, относится ли это к вам, но у меня недавно была похожая проблема. Моя проблема заключалась в удаленном и локальном доступе, немного изменив мой дизайн и добавив имена интерфейсов в мои аннотации @Local & @Remote.
Я думаю, что вы пропустите управление транзакциями в ваших quartz.properties. Что-то вроде этого:
org.quartz.scheduler.userTransactionURL=jta/usertransaction
org.quartz.scheduler.wrapJobExecutionInUserTransaction=true
Идея состоит в том, чтобы сказать Кварцу обернуть выполнение задания в транзакцию и где ее получить.