为什么 EJB Timer Service 使用 Singleton 作为标准?

M. *_* K. 5 java singleton ejb timer stateless

我最近一直在研究 ejb,我也在阅读有关计时器服务的内容,但是即使我阅读了无状态、有状态和单例类型的会话 Bean,我仍然很难弄清楚是什么让计时器服务具有多实例属性。

我看过一些例子,即使是最简单的例子也使用单例会话 Bean,所以,如果我要编写一个简单的程序来测试它,是否可以使用无状态 Bean 还是建议使用单例? 另外,如果可能的话,我是否可以遇到无状态不是最佳的情况?

mar*_*ess 0

它使用单例的原因至少有两个:

1.

只有单例才有启动初始化的能力。这意味着,您可以在应用程序启动时注册计时器服务。

2.

如果要使用无状态 bean,那么将向每个无状态 bean 设置注册一个新的计时器服务来服务请求。单例保证只有一种计时器被注册。想象一下,如果您无意中在无状态 bean 中使用了计时器,然后或多或少同时创建了多个计时器来服务请求,那么会出现争用、完整性问题或金钱损失。