質問

Tomcat / Jettyサーバーで定期的なタスク(デーモンスレッドなど)を実行するための最良/最も簡単な方法は何ですか?スレッドを開始するにはどうすればよいですか?シンプルなメカニズムはありますか、それとも悪い考えですか?

役に立ちましたか?

解決

ServeletContextにjava.util.Timer(またはより良いのはScheduledExecutor)インスタンスを隠しておくことは問題なく、効果的です。サーブレットのinit()呼び出しで作成すると、すべてのサーブレットがTimerTasksを追加できます。

他のヒント

すべてをJava側に保持する場合は、クォーツをご覧ください。
cronジョブと同じ柔軟性で、ジョブのフェイルオーバーときめ細かな再パーティション化を処理します。

多くのシステムで機能する1つの汎用的な方法は、アプリに対して定期的なwgetを実行するcronジョブを作成することです。

tomcat / jettyに答えることはできませんが、PythonベースのWebアプリで同様のことをしました。

通常、必要な定期的なタスクを実行する別のアプリを実行するだけです。ウェブサイトとアプリの間に相互運用が必要な場合、その通信は何らかの種類のAPI(XML-RPC / unixソケットなどを使用)を介して、または適切な場合はデータベース層のみを介して行われます。

役立つこと。

cronジョブを使用したいが、開発システムへの管理アクセス権がない場合、次のコマンドを実行してユーザーcrontabを実行できます。

crontab -e

ほとんどのシステムではデフォルトでviが使用されますが、次の方法で選択したエディターに変更できます。

export EDITOR=/usr/local/bin/my_editor

次に、crontab -eコマンドを実行すると、エディターでcrontabファイルが起動します。保存すると、変更はシステムのcronにコミットされます。

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