24

tomcatを使用するJavaWebアプリケーション(servlets / spring mvc)で、cronジョブタイプサービスを実行することは可能ですか?

たとえば、15分ごとに、ログデータベースを削除します。

コンテナに依存しない方法でこれを行うことができますか、それともTomcatまたは他のコンテナを使用して実行する必要がありますか?

メソッドが特定の時間に実行されることが保証されているのか、15分ごとに実行されるのかを指定してください。ただし、アプリケーションがリサイクルされるとリセットされる可能性があります(タイマーを使用する場合は.netでこのようになります)。

4

4 に答える 4

12

第23章「スケジューリングとスレッドプール」に記載されているように、SpringはとTimerQuartz Scheduler(http://www.quartz-scheduler.org/ )の統合クラスを通じてスケジューリングをサポートしています。単純なニーズについては、JDKを使用することをお勧めしTimerます。

Javaスケジューラは通常、Javaビジネス指向のジョブをトリガーするために使用されることに注意してください。sysadminタスク(あなたが与えた例のような)のために、あなたは本当にcronと伝統的な管理ツール(bashなど)を好むべきです。

于 2010-01-11T01:16:56.780 に答える
2

Springを使用している場合は、組み込みのQuartzまたはTimerフックを使用できます。http://static.springsource.org/spring/docs/2.5.x/reference/scheduling.htmlを参照してください

于 2010-01-11T01:00:57.660 に答える
0

コンテナ固有になります。これは、JavaでQuartzを使用するか、Javaのスケジューリング並行utils(ScheduledExecutorService)を使用するか、OSレベルのcronジョブとして実行できます。

15分ごとは極端に思えます。通常、書き込まれなくなったログファイルのみを切​​り捨て/削除することをお勧めします(通常、ログファイルは一晩でロールオーバーされます)。

于 2010-01-11T01:02:05.477 に答える
0

ジョブはバッチ指向です。手動トリガーまたはcronスタイル(必要に応じて)のいずれか。

それでも、webappとcronスタイルのジョブの関係がわかりませんか?私が考えることができる唯一のWebアプリケーションのユースケースは、ジョブをトリガーするHTTPエンドポイントが必要な場合です(ただし、これは「cronスタイル」であるというあなたの声明に反対します)。

通常、問題領域の「バッチジョブ」を解決する専用のフレームワークを使用します。クォーツをお勧めします。

于 2010-01-11T01:16:17.340 に答える