我对Tomcat不是很熟悉,在我看来它基本上被抽象为cgi服务器,可以在调用之间保存JVM - 我知道它可以做更多的事情.
我正在寻找一种在Tomcat服务器启动时启动后台线程的方法,它会定期更新服务器上下文(在我的特定情况下,这是一个从其他服务中侦听心跳并更新可用性信息的线程,但可以想象各种用途).
有没有标准的方法来做到这一点?上下文的启动和更新/查询?
任何指向相关文档和/或代码示例的指针都将非常感激.
如果要在部署WAR时启动线程,可以在web.xml中定义上下文侦听器:
com.mypackage.MyServletContextListener
然后实现那样的类:
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) { } } }
我正在寻找一种在Tomcat服务器启动时启动后台线程的方法
我想您正在寻找一种在Tomcat启动Web应用程序时启动后台线程的方法.
这可以使用ServletContextListener完成.它在web.xml中注册,并在您的应用程序启动或停止时调用.然后,您可以使用常规Java方法创建(并稍后停止)您的Thread,以创建一个Thread(或ExecutionService).
把
在
在web.xml块将迫使你的servlet的init()
为Tomcat启动时,就会立即发生,而不是等待到达的第一条请求.如果要从中生成后台线程,这非常有用init()
.