在不同的 WAR 之间共享一个线程池

Sharing a thread pool between different WARs

在 Tomcat 8 服务器中,我们有几个 WAR 项目需要线程池来执行任务(特别是调度程序和并行处理以提高性能)。

由于每个池都处理自己的线程,最终会向容器中添加太多线程,因此出现了一个明显的问题:是否有可能以某种方式与内部的多个 war 项目共享一个线程池Tomcat?

池是 Spring's schedulers and the standard Java ThreadPoolExecutor 的混合体,但我想如果需要,它们可以标准化为单一类型。

PS:这真的有帮助吗The Executor (thread pool)如果有,如何?

您可以将单个 ThreadPool 配置为全局 JNDI 资源,然后使用 ResourceLinks 使该资源可用于您需要的尽可能多或尽可能少的 Web 应用程序。您可能需要编写一个简单的自定义资源工厂来完成这项工作。

Tomcat 的 JNDI documentation 提供了一个简单工厂的实例。