【问题标题】:Query on java singleton patternjava单例模式查询
【发布时间】:2013-06-30 06:46:18
【问题描述】:

我对单例模式有一些概念性的想法,我对单例如何在不同的类加载器中工作感到困惑。 我试图找出这一点,但无法得到确切的想法。 单例对象基本上是每个类加载器的单个实例。 对于分布式应用程序,我的服务器上部署了多个应用程序,并且我在一个应用程序中创建了一个单例对象,当我尝试从另一个应用程序访问这个单例对象时,因为类加载器不同,它将创建一个新实例。 怎么控制??

【问题讨论】:

  • wiki 有一些关于该模式的好信息,它在 java 中

标签: java spring jakarta-ee design-patterns singleton


【解决方案1】:

对于分布式应用程序,我有多个 应用程序部署在我的服务器上,我创建了一个单例 一个应用程序中的对象,当我试图访问这个单例时 来自另一个应用程序的对象,因为类加载器不同 将创建一个新实例

多个 JVM 上的多个类加载器会导致单例模式中断,因为您将拥有该类的多个实例。

集群应用服务器中单例的最佳用途可能是当单例完全无状态时(这些是在初始化 ApplicationContext 时创建的。在此 ApplicationContext 的生命周期内将返回/注入相同的实例。 ),并且仅用于方便访问全局数据/函数。

【讨论】:

    【解决方案2】:

    服务器上的不同应用程序不应相互干扰。这就是服务器为它们创建不同的类加载器的原因。它们的行为就像在不同的 JVM 上运行一样。

    【讨论】:

    • 在一个只有一个JVM但有多个类加载器的环境中,我的理解是可以从同一个完全限定的类名创建多个类对象,因此仍然可以创建多个两种方法的类实例(我在这里指的是类声明,而不是类对象)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多