如何在群集环境中使用javax.ejb.Singleton?

Chr*_*rle 7 java ejb java-ee ejb-3.0 java-ee-6

我需要在应用程序中维护一个对于集群环境中的所有用户和所有节点都是唯一的简单计数器.我想过如下使用单例会话bean注释javax.ejb.Singleton:

package foo;

import javax.ejb.Singleton;

@Singleton
public class Bean {
    private int counter;
    [...]
}
Run Code Online (Sandbox Code Playgroud)

这看起来很简单,但如果在集群环境中按预期工作,我找不到答案.群集的每个节点都有自己的实例吗?

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

Gab*_*uru 11

群集的每个节点都有自己的实例吗?

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

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