当前位置:  开发笔记 > 编程语言 > 正文

Tomcat servlet应用程序的后台线程

如何解决《Tomcatservlet应用程序的后台线程》经验,为你挑选了3个好方法。

我对Tomcat不是很熟悉,在我看来它基本上被抽象为cgi服务器,可以在调用之间保存JVM - 我知道它可以做更多的事情.

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

有没有标准的方法来做到这一点?上下文的启动和更新/查询?

任何指向相关文档和/或代码示例的指针都将非常感激.



1> Chris Thornh..:

如果要在部署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) {
        }
    }
}



2> Thilo..:

我正在寻找一种在Tomcat服务器启动时启动后台线程的方法

我想您正在寻找一种在Tomcat启动Web应用程序时启动后台线程的方法.

这可以使用ServletContextListener完成.它在web.xml中注册,并在您的应用程序启动或停止时调用.然后,您可以使用常规Java方法创建(并稍后停止)您的Thread,以创建一个Thread(或ExecutionService).



3> 小智..:

1在web.xml块将迫使你的servlet的init()为Tomcat启动时,就会立即发生,而不是等待到达的第一条请求.如果要从中生成后台线程,这非常有用init().

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有