我正在IBM Liberty Profile下为我的应用程序配置Quartz。当我使用默认的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
这是Liberty Profile的server.xml,用于数据源。
<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>
你们能给我一些关于这个问题的建议吗?谢谢!