0

我在集群模式下使用 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 委托?

4

1 回答 1

0

如果我是你,我会检查以下内容: - 确保数据库连接是“自动提交”,除非你的操作不会被持久化。

  • 您可能有交易问题,请检查 txn 日志。
于 2013-01-31T13:46:59.970 回答