質問

Java Web アプリケーションで 1 つの関数を定期的に実行する必要があります。あるクラスの関数を定期的に呼び出すにはどうすればよいですか?サーバーの高負荷などのイベントが発生したときに関数を呼び出す方法はありますか。crontabとは何ですか?その作業は定期的に行われますか?

役に立ちましたか?

他のヒント

あなたが使用することができ、より堅牢な何かが必要な場合はクォーツする

crontabについては、Unixマシン上のスケジューリングツールです。

サーバが高負荷を持っている時にメソッドを呼び出すためには、少なくとも二つの可能なアプローチがあります。お使いのアプリケーションサーバーを使用して、その動作を監視し、progrommatic行動を取ることができるようになる管理フックを持っているかもしれません。 Alterntaivelyあなたには、いくつかのシステム監視機能(例えばチボリかのOpenView)を持っており、それは「イベント」を生成し、(例えば)JMSメッセージなどのイベントを提供し、サーバーがそれらを拾う持ってすることも難しくはありません。

しかし、あなたが達成したいかについてもう少し説明したいかもしれません。適応型アプリケーションbeahviourは、権利を取得するのは非常に難しいかもしれません。

あなたが定期的に何かを実行したい場合は、

、ウェブサーバでそれをしません。それはIMO非常に間違ったアプローチだろう。それはあなたがUnixライクなオペレーティングシステム上にある場合、代わりにcronを使用することをお勧めします。 Windowsサーバは、同様の機能を提供します。

あなたは既に春を使用している場合は、

、あなたは春のタスク実行フレームワークを見てすることがあります - として、タスクとしてメソッドに注釈を付けると労働者に委譲し、実際の作業プロセッサで機能を実装するための@Scheduledと@Asyncを使用してで説明します:

ます。http://ブログ.springsource.com / 2010/01/05 /タスクスケジューリングの簡素化・イン・スプリング3-0 /

利点は、あなたの春のコンテキストでのcronに似た構文を使用してタイマーを定義することができますし、タスクを設定するために特別な何かを必要としないということです、それはまた、Java EEアプリケーションにうまく統合されており、Webサーバとよく果たすべき(これはカスタムスレッドは常にやっていない傾向がある)。

あるクラスの関数を定期的に呼び出すにはどうすればよいですか?

解決策はいくつかあります。ある タイマー, 、次のような Java cron 実装 cron4j, 石英, 、あるいは EJBタイマーAPI. 。どちらを選択するかは、状況に大きく依存します。アプリケーションの種類、使用されているテクノロジー、ジョブの数など。

サーバーの高負荷などのイベントが発生したときに関数を呼び出す方法はありますか

ジョブで JMX を使用して、情報にアクセスして監視し、特定の条件下でアクションをトリガーすることもできます。ただし、これはイベントベースではなくプル モードです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top