一尘不染

Tomcat Servlet应用程序的后台线程

tomcat

我对Tomcat不太熟悉,在我看来,它基本上是抽象为cgi服务器,可以在两次调用之间保存JVM -尽管我知道它可以做得多。

我正在寻找一种在Tomcat服务器启动时启动 后台
线程的方法,该方法会定期更新服务器上下文(在我的特殊情况下,这是一个侦听其他服务的心跳并更新可用性信息的线程,但是可以想象得到有多种用途)。

有标准的方法吗?上下文的启动和更新/查询?

指向相关文档和/或代码示例的任何指针将不胜感激。


阅读 283

收藏
2020-06-16

共1个答案

一尘不染

如果要在部署WAR时启动线程,则可以在web.xml中定义上下文侦听器:

<web-app>
    <listener>
       <listener-class>com.mypackage.MyServletContextListener</listener-class>
    </listener>
</web-app>

然后实现该类,例如:

public class MyServletContextListener implements ServletContextListener {

    private MyThreadClass myThread = null;

    public void contextInitialized(ServletContextEvent sce) {
        if ((myThread == null) || (!myThread.isAlive())) {
            myThread = new MyThreadClass();
            myThread.start();
        }
    }

    public void contextDestroyed(ServletContextEvent sce){
        try {
            myThread.doShutdown();
            myThread.interrupt();
        } catch (Exception ex) {
        }
    }
}
2020-06-16