Tomcat / Jettyサーバーで定期的なタスク(デーモンスレッドなど)を実行するための最良/最も簡単な方法は何ですか?スレッドを開始するにはどうすればよいですか?単純なメカニズムがありますか、それともこれはまったく悪い考えですか?
5 に答える
すべてをJava側に保持したい場合は、Quartzを見てください。
cron ジョブと同じ柔軟性で、フェールオーバーとジョブの細かい再分割を処理します。
サーブレット コンテキストに java.util.Timer (またはさらに良いことに、ScheduledExecutor) インスタンスをスタッシュすることは問題なく効果的です。サーブレットの init() 呼び出しで作成すると、すべてのサーブレットが TimerTasks を追加できます。
多くのシステムで機能する汎用的な方法の1つは、アプリに対して定期的にwgetを実行するcronジョブを作成することです。
tomcat/jetty についてはお答えできませんが、Python ベースの Web アプリで同様のことを行いました。
私は通常、必要な定期的なタスクを実行する別のアプリを実行するだけです。Web サイトとアプリの間で相互運用が必要な場合、その通信は何らかの API (XML-RPC/unix ソケットなどを使用) を介して行うことも、十分であればデータベース層を介して行うこともできます。
それが役立つことを願っています。
cron ジョブを使用したいが、開発システムへの管理アクセス権がない場合は、次のコマンドを実行してユーザー crontab を実行できます。
crontab -e
ほとんどのシステムではデフォルトで vi を使用しますが、次の方法で任意のエディターに変更できます。
export EDITOR=/usr/local/bin/my_editor
次に、crontab -e コマンドを実行すると、エディターで crontab ファイルが起動します。保存すると、変更がシステムの cron にコミットされます。