Tomcat启动后启动监听器?

时间:2015-10-01 16:05:00

标签: java tomcat java-ee listener

我使用this代码在Tomcat初始化之前启动一个侦听器,但它有一个while循环,它将每隔5秒检查一次数据库是否有变化。有什么方法可以跳过循环部分,直到我的Web服务完全启动,然后触发循环开始检查?

编辑:意见listener而非Servlet

EDIT2 :以下代码

public class DatabaseChecker implements ServletContextListener {

final static String URL = "redacted";
final static String USER = "redacted";
final static String PASS = "redacted";

@Override
public void contextInitialized(ServletContextEvent event) {

    Vector<String> completedJobs = new Vector<String>();

    try {
        while(true) {   // loop to always check & notify
            Thread.sleep(5000);
            System.out.println("Checker running ...");
            // completedJobs = selectCompletedJobs();

        }
    } catch (Exception e) {
        e.printStackTrace();
    }

}

@Override
public void contextDestroyed(ServletContextEvent arg0) {
    System.out.println("ServletContextListener destroyed");

}

}

1 个答案:

答案 0 :(得分:0)

是。 ServletContext允许您添加属性,这是在ServletContextListener和servlet中运行的服务之间共享的全局上下文。

您可以通过轮询属性让ServletContextListener等待Web服务。

当您的网络服务准备就绪时,它可以将该属性添加到ServletContext

现在,当ServletContextListener找到属性时,它可以继续。