0

クラスターモードのWeblogic 12でQuartz 2.1.6を使用しており(実際には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.propertiesOracle 11 DBMS で Weblogic 12 を使用している場合、どの JDBC デリゲートで宣言する必要がありますか?

4

1 に答える 1

0

私があなただったら、次のことを確認します。-操作が永続化されない場合を除いて、DB接続が「自動コミット」であることを確認します。

  • トランザクションの問題がある可能性があります。txnログを確認してください。
于 2013-01-31T13:46:59.970 に答える