あなたは質問を洗練するので、ここでは別の答えが来る:Tomcatの中でデーモンを開始する方法:
まず、web.xmlにあなたのデーモンを登録します。
<リスナー> my.package.servletを
T:.Daemons < /リスナー>
このようなServletContextListener
の実装としてデーモンクラスを実装コードは5秒ごとに呼び出され、TomcatはあなたのアプリケーションがシャットダウンしたときにcontextDestroyedを呼び出します。変数が揮発性であることに注意してください。そうでなければ、マルチコアシステムのシャットダウンに問題が発生する可能性があります。
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class Daemons implements ServletContextListener {
private volatile boolean active = true;
Runnable myDeamon = new Runnable() {
public void run() {
while (active) {
try {
System.out.println("checking changed files...");
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
public void contextInitialized(ServletContextEvent servletContextEvent) {
new Thread(myDeamon).start();
}
public void contextDestroyed(ServletContextEvent servletContextEvent) {
active = false;
}
}
問題は通知の問題ではなく、むしろtomcatでデーモンを開始する最善の方法です。スレッドをロードするサーブレットを使用できないのはなぜですか? –