我使用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");
}
}
答案 0 :(得分:0)
是。 ServletContext
允许您添加属性,这是在ServletContextListener
和servlet中运行的服务之间共享的全局上下文。
您可以通过轮询属性让ServletContextListener
等待Web服务。
当您的网络服务准备就绪时,它可以将该属性添加到ServletContext
。
现在,当ServletContextListener
找到属性时,它可以继续。