gpt4 book ai didi

java - 跨 JVM 或 Application 实例或 Tomcat 实例的单例

转载 作者:IT老高 更新时间:2023-10-28 20:49:23 26 4
gpt4 key购买 nike

如果我在单个 Tomcat 实例(或任何其他服务器)上部署并运行同一应用程序的 2 个实例。然后将创建一个(单例类的)对象:

  1. 跨单个 Tomcat 实例(但常见于同一应用程序的 2 个实例)或
  2. 跨应用实例(2 个应用实例不同)

所以本质上我想了解每个 JVM 创建一个 Singleton 类的对象总是这样的情况吗?如果应用程序托管在 Web 服务器(或容器)上,这将如何工作。

最佳答案

如果您有一个单例类,并且您在 Tomcat 中运行两个使用该类的 Web 应用程序,则两个 Web 应用程序都会在运行 Tomcat 的 JVM 中获得该单例的 2 个不同实例。

但如果您的 webapp 将使用来自 JRE 或 Tomcat 共享库的单例,例如 Runtime.getRuntime webapps 将获得相同的 Runtime 实例。

这是因为 Tomcat 为 webapps 使用单独的类加载器。当 webapp 类加载器加载一个类时,它首先尝试在 webapp 类路径中找到它,如果找不到该类,它会要求父类加载器加载该类。

关于java - 跨 JVM 或 Application 实例或 Tomcat 实例的单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17721263/

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