我在集群模式下使用 Quartz 2.1.6 和 Weblogic 12(实际上只有 1 台开发机器)并使用标准的 JDBC 委托(org.quartz.impl.jdbcjobstore.StdJDBCDelegate
)
每个请求我可能有多个触发器。触发器与持久作业相关联,我将使用以下代码删除与单个请求关联的所有触发器:
Scheduler sched;
try {
sched = new StdSchedulerFactory().getScheduler("MyScheduler");
Set<TriggerKey> triggerKeys = sched.getTriggerKeys(triggerGroupEquals(String.valueOf(requestId)));
for (TriggerKey k : triggerKeys) {
if (sched.unscheduleJob(k)) {
logger.info("Removed trigger " + k.toString() + " for request " + requestId);
}
}
} catch (SchedulerException e) {
logger.error(e);
}
在日志中,我看到消息“Removed trigger 123 for request abc”,但触发器仍然存在于数据库中并且仍然触发作业。我在控制台中没有异常跟踪。我正在使用 XA 数据源,但被调用的 EJB 业务方法被注释为支持事务。我看没有回滚。偶尔会删除触发器,但不会立即删除。
我错过了什么?
quartz.properties
如果我将 Weblogic 12 与 Oracle 11 DBMS 一起使用,我应该声明什么 JDBC 委托?