当前位置: 首页 > 面试题库 >

集群环境中javax.ejb.Singleton的单例程度如何?

倪子晋
2023-03-14
问题内容

我需要为集群环境中的所有用户和所有节点维护一个在应用程序内唯一的简单计数器。我考虑过像这样使用单例会话bean注释javax.ejb.Singleton:

package foo;

import javax.ejb.Singleton;

@Singleton
public class Bean {
    private int counter;
    [...]
}

这看起来很简单,但是如果它在集群环境中可以正常工作,我将找不到答案。集群的每个节点是否都具有自己的实例?

当然,我可以将bean保留在数据库中,但实际上这只是一个计数器,这样做会过分杀伤力。另外,我希望计数器在应用程序崩溃或重新启动时重置,因此,将其保留会产生比解决的问题更多的问题。


问题答案:

集群的每个节点是否都具有自己的实例?

是的,每个群集节点将具有不同的Singleton实例。因此,@ Singleton注释不能解决您的问题。

请记住,Java
EE规范没有定义任何类型的集群行为。您需要搜索特定的供应商解决方案以实现这种要求。仅作为示例,请参见此链接。



 类似资料:
  • 问题内容: 将Singleton对象重构到集群环境的最佳策略是什么? 我们使用Singleton从数据库中缓存一些自定义信息。它 主要是 只读的,但是在发生某些特定事件时会刷新。 现在,我们的应用程序需要部署在集群环境中。根据定义,每个JVM将具有自己的Singleton实例。因此,当在单个节点上发生刷新事件并且刷新其缓存时,JVM之间的缓存可能不同步。 保持缓存同步的最佳方法是什么? 谢谢。 编

  • 我们的(Spring)应用程序包含几个,这些调度器在夜间活动,以更改/更新中的一些数据(来自 )。 这一切都运行良好,问题是我们的应用程序很快就会在运行。 防止< code >实例A和< code >实例B的< code >调度程序同时执行相同工作的最佳选项是什么? **UPDATE** 群集环境设置为。 每个节点都与自己的数据库实例通信。每个数据库实例将数据复制到其他实例。 DB-实例不是设置为

  • 一、单机环境搭建 1.1 下载 下载对应版本 Zookeeper,这里我下载的版本 3.4.14。官方下载地址:https://archive.apache.org/dist/zookeeper/ # wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz 1.2 解压 # t

  • 我使用Spring调度程序,使用@调度注释来调度运行文件生成服务的作业。应用程序部署在集群环境中Tomcat的5个单独节点上,用于负载平衡和故障转移。正因为如此,服务被调度了5次,这是不可能的。有没有办法将调度程序配置为仅在当前节点上运行? 有一种方法使用数据库找出当前活动节点,并在这里调用该特定实例的调度器 另一种方法是使用石英调度器 由于我无法对部署的应用程序进行重大更改,是否有简单的解决方案

  • 目前Cloud-ML生态云只有武清集群。这个集群的基本配置如下: 武清集群 集群目前包括若干台CPU和GPU节点。 集群的Endpoint为:https://cnbj2.cloudml.api.xiaomi.com

  • 要求是定期运行一个Java应用程序(例如每天),向客户发送电子邮件/短信通知。环境是集群/高可用性,其中多个节点将同时处于活动状态。该应用程序将部署在所有节点上,但只有一个节点应该启动并运行,即使所有节点都配置为运行。如何实现这一点。在Java应用中,使用了石英调度器。 还需要一些关于如何在Linux机器上部署这个Java应用程序的指导(像Cron作业或其他一些方式)。要求是,这个应用程序应该在服