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