gpt4 book ai didi

java - Tomcat 集群 6 和 ContextListener

转载 作者:行者123 更新时间:2023-11-28 23:48:50 25 4
gpt4 key购买 nike


在 Tomcat 的单个实例上,我有一个在初始化上下文时启动的线程。像这样:

public class MyContextListener implements ServletContextListener {
private MyThread thread = null;

@Override
public void contextInitialized(ServletContextEvent sce) {
//Start thread...
}

@Override
public void contextDestroyed(ServletContextEvent sce) {
//Stop thread...
}
}

这个线程每 10 分钟在系统中执行一些重要的工作,并且运行良好。

现在我已经切换到 tomcat 实例的集群,并且这个线程在两个实例上运行。我正在尝试实现不同的行为。

我要实现的目标:

  • 该线程此时应仅在一个实例上运行。
  • 如果第一个实例失败(在哪个线程上运行),线程应该在第二个实例上启动。

如有任何提示,我将不胜感激。

我的应用程序逻辑是什么?
线程执行的应用逻辑如下:

  1. 从数据库中读取某物。
  2. 分析数据库信息。
  3. 如果需要,向外部系统发送 HTTP 请求。
  4. 让线程再 hibernate 10 分钟。

重点是:如果我有 2 个 tomcat 实例,则只有一个应该执行此逻辑

最佳答案

如果我理解正确的话,在使用 web 应用程序服务器时,您实际上不允许在您的应用程序中启动一个新线程。所有线程都必须由应用服务器管理。

关于java - Tomcat 集群 6 和 ContextListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11258072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com