现在,使用EJB 3.1,我们可以找到javax.ejb.Singleton annocation,它可以确保这个bean将成为单例。
有没有一种方法可以确保在EJB 3.0中使用无状态bean的单例,并在我的代码中进行一些修改(使用关键字static,或其他方式来执行此操作....)
答案 0 :(得分:8)
如果您能够将@Stateless
bean池大小限制为1,那么您可以非常接近@Singleton
。
效果就像拥有一个@Singleton,它使用@Lock(WRITE)
进行所有调用(即没有并发)并且不会急切地通过@Startup
启动( it将在首次访问时开始)。
如果您的平台可以选择热切地填充@Startup
bean池,您仍然可以获得@Stateless
的效果。
答案 1 :(得分:1)
有没有办法可以确保在EJB 3.0中使用无状态bean的单例,并在我的代码中进行一些修改(使用关键字static,或其他方式来做到这一点......)
不,没有标准。您的容器可能会提供一些特定的扩展(例如JBoss具有专有的@Service
注释)。