我需要为集群环境中的所有用户和所有节点维护一个在应用程序中唯一的简单计数器。
我考虑过使用单例会话 bean 注释 javax.ejb.Singleton,如下所示:
package foo;
import javax.ejb.Singleton;
@Singleton
public class Bean {
private int counter;
[...]
}
这看起来很简单,但如果这在集群环境中按预期工作,我找不到答案。集群的每个节点是否都有自己的实例?
当然,我可以将 bean 持久保存在数据库中,但它实际上只是一个计数器,这样做就有点矫枉过正了。另外,我希望计数器在应用程序崩溃或重新启动时重置,因此坚持下去会产生比它解决的问题更多的问题。
集群的每个节点是否都有自己的实例?
是的,每个集群节点都会有一个不同的 Singleton 实例。因此,@Singleton注释不能解决您的问题。
请记住,Java EE 规范没有定义任何类型的集群行为。您需要搜索特定的供应商解决方案来实现此类要求。举个例子看看这个link.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)