java - 在 Tomcat 启动后启动监听器?

标签 java tomcat jakarta-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");

}

最佳答案

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

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

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

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

关于java - 在 Tomcat 启动后启动监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32892068/

相关文章:

java - 使用小米手环和 BLE 测量心率

java - 在类的构造函数中初始化泛型类型的数组,而无需传递 Class<T> 参数

java - 服务器端的 Hibernate 实例化失败

apache - 学习apache httpd、tomcat等web服务器

jakarta-ee - 当transaction属性为 "Required"时,为什么CMT在EJB方法的退出时提交?

java - 在android中用字符串中的另一个字符替换一个字符?

Java <Optional> 对象为空或对象的属性为空?

java - 关于tomcat和jmx的问题

java - @ManyToMany - 数据不会保存在数据库中