我可以使用 EJB 3.0 制作自己的 Singleton Stateless Bean 吗?
现在,在 EJB 3.1 中,我们可以找到 javax.ejb.Singleton 注释,它可以确保该 bean 将是单例的。
有没有一种方法可以确保我在 EJB 3.0 中使用无状态 bean 并在我的代码中进行一些修改(使用关键字 static 或其他方式来实现这一点......)
Now, with EJB 3.1, we can find the javax.ejb.Singleton annocation that can ensure that this bean is going to be singleton.
Is there a way that i can ensure singleton using stateless beans in EJB 3.0 with some modifications in my code (use of the keyword static, or other way to do that....)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您能够将
@Stateless
bean 池大小限制为正好 1,那么您就可以非常接近@Singleton
。效果就像有一个@Singleton,它对所有调用使用@Lock(WRITE)(即无并发),并且不会通过
@Startup<急切启动/code> (它将在第一次访问时启动)。
如果您的平台可以选择立即填充
@Stateless
bean 池,您仍然可以获得@Startup
的效果。If you're able to limit your
@Stateless
bean pool size to exactly 1, then you can get pretty close to an@Singleton
.The effect would be like having an @Singleton that uses
@Lock(WRITE)
for all calls (i.e. no concurrency) and does not eagerly startup via@Startup
(it will start on first access).You might still be able to get the effect of
@Startup
if your platform has the option to eagerly fill@Stateless
bean pools.不,没有什么标准。不过,您的容器可能会提供一些特定的扩展(例如,JBoss 有专有的
@Service
注释)。No, nothing standard. Your container might provide some specific extensions though (e.g. JBoss has a proprietary
@Service
annotation).