Jersey/Tomcat/Apache/PostgreSQL で実行されている RESTful Web サービスを介して着信データを受信する Web アプリケーションがあります。この Web サービス アプリケーションとは別に、実行する必要がある反復タスクやスケジュール タスクが多数あります。たとえば、さまざまな種類のデータをさまざまな間隔で消去したり、さまざまなスケジュールで外部システムからデータを取得したり、指定した日時にレポートを生成したりします。
したがって、Quartz Scheduler を読んだ後、それが非常に適しているように思えます。
私の質問は、Tomcat で (QuartzInitializerListener を介して) 実行するように Quartz ベースのスケジューリング アプリケーションを設計するか、それとも Linux デーモンとして実行するように (たとえば、Apache Commons Daemon または Tanuk Java Service Wrapper を介して) スタンドアロン アプリケーションに組み込むべきかということです。
一方では、Tomcat を使用して、http 呼び出しの受信を目的としていないアプリケーションをホストすることは直感に反するように思えます。一方、私は Apache Commons Daemon や Java Service Wrapper を使用したことがないので、Tomcat 内で実行するのが最も抵抗の少ない方法かもしれません。
どちらのアプローチにも、知っておくべき重要な利点や危険性はありますか? 私たちのコアモジュールはすでにデータアクセスやロギングなどを処理しているので、どちらにしてもこれらのサービスが大きな要因になるとは思いません。
スケジューリングはデータ駆動型になるため、Quartz ベースのスケジューラーは PostgreSQL から関連データを読み取ります。ただし、Tomcat 内でスケジューリング アプリケーションを実行する場合、Tomcat への http 呼び出しを介してアプリケーションにメッセージを送信することは可能ですか? 最後に、私たちのジョブは既存のアプリケーション データによって駆動されるため、Quartz JDBCJobStore は必要ないと思います。