Я настраиваю Quartz для своего приложения в IBM Liberty Profile. Когда я использовал RAMJobStore по умолчанию. Триггер сработал, и запланированное задание было выполнено. Вот коды:
JobDetail job = JobBuilder.newJob(QuartzBatchJobs.class).build();
Trigger trigger = TriggerBuilder.newTrigger().startNow().build();
try {
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
scheduler.scheduleJob(job, trigger);
} catch (Exception e) {
System.out.println(e.toString());
}
Однако, когда я переключился на jdbcjobstore JobStoreTX и запустил приложение, все кварцевые таблицы были обновлены, но сам триггер не сработал и задание не запустилось. Вот мои свойства quartz.properties:
org.quartz.threadPool.threadCount = 10
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.tablePrefix=QRTZ_
org.quartz.jobStore.dataSource=quartzRepo
org.quartz.dataSource.quartzRepo.jndiURL=jdbc/quartzRepo
Вот server.xml Liberty Profile для источника данных.
<dataSource id = "quartzRepo" jndiName = "jdbc/quartzRepo" type = "javax.sql.XADataSource" isolationLevel = "TRANSACTION_READ_COMMITTED">
<jdbcDriver libraryRef = "DB2Jcc4Lib" />
<properties.db2.jcc currentSchema = "qrtz" databaseName = "localdb2" password = "${jdbc.quartzRepo.password}" portNumber = "50000" serverName = "localhost" user = "${jdbc.quartzRepo.user}" driverType = "4" />
</dataSource>
Не могли бы вы дать мне несколько советов по этому поводу? Спасибо!
Спасибо, njr. Должен ли я использовать JobStoreTX или JobStoreCMT, учитывая, что мое приложение работает на свободе?
Вы можете использовать любой из них в Liberty. Вам нужно будет решить, хотите ли вы выполнять операции над заданиями Quartz в транзакции JTA (JobStoreCMT) или нет.
Конфигурация вашего источника данных выглядит довольно стандартной, и если вы сказали, что таблицы были успешно созданы с ее помощью, это еще одно свидетельство ее правильности. Проверяли ли вы журналы сервера на наличие каких-либо исключений / ошибок, которые могут указывать на проблемы, с которыми сталкивается кварц, когда он пытается запланировать / запустить задания?