Quartz 1.6.6 を使用する Java アプリケーションがあります。これは、2 つのアプリケーション サーバーを含むアーキテクチャの Weblogic にデプロイされます。
アプリケーションには、定期的に (1 分に 1 回) 実行されるトリガー プロセスが含まれています。これは、Spring 3.1.1 (org.springframework.scheduling.quartz.SchedulerFactoryBean を使用) を使用して実現されます。
ジョブが 1 分に 1 回だけ実行されるようにアプリケーション サーバーが同期するように、Quartz のクラスタリング機能を利用できるようにするために、Java アプリケーションの EAR ファイルに Quartz.properties ファイルを含めました。ただし、アプリケーション ログを見ると、生成されたメッセージから、60 秒ごとに 2 つのジョブがまだ実行されていることがわかります。一方は他方から数秒遅れています。
これが紛らわしいのは、Quartz スケジューリングを組み込んだ別の Java アプリケーションがあり、非常にうまく機能しているように見えることです。この別のアプリケーションには、1 分ごとにトリガーを起動する同一のメカニズムがあり、ログからジョブが 60 秒に 1 回しか実行されていないことがわかります。
ジョブが実行された昨日の午後の例:
15:10:46,984 15:10:49,583 15:11:46,961 15:11:49,561
これが私の Quartz.properties ファイルです:
org.quartz.scheduler.instanceName=QuartzClusteredScheduler
org.quartz.scheduler.instanceId=AUTO
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount=5
org.quartz.dataSource.dbDS.driver=oracle.jdbc.driver.OracleDriver
org.quartz.dataSource.dbDS.URL=jdbc:oracle:thin:@MY_DB:1521:my_sid
org.quartz.dataSource.dbDS.user=username
org.quartz.dataSource.dbDS.password=password
org.quartz.dataSource.dbDS.maxConnections=5
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.isClustered=true
org.quartz.jobStore.dataSource=dbDS
org.quartz.jobStore.tablePrefix=QRTZ_
Quartz 固有のテーブルのデータベースを調べましたが、データがまったくないため、何らかの理由でプロパティ ファイルが取得されていないと思います。ただし、WAR の WEB-INF/classes の下にある EAR ファイルに Quartz.properties を含めたので、その理由はわかりません。
ご協力いただきありがとうございます。