2009-08-24 29 views
1

我需要实现一个简单的DAO bean,它也缓存从数据库读取的数据。这个DAO bean被无状态bean使用。如何实现Singleton-like EJB3.0 bean?

因为EJB3.0不支持singleton bean,所以实现这种DAO bean的正确方法是什么?只使用静态变量来保存缓存可行吗?

我们正在使用Oracle AS,不打算使用群集。

回答

4

以某种跨应用程序服务器方式执行此操作的“正确”方式是使用jmx mbean作为缓存行为。 mbeans是单身(每个应用程序服务器),可以执行线程和锁定等操作。取决于你使用的应用程序服务器,当然,在实践中,mbean可能或多或少地难以使用。

2

大多数应用程序服务器和JPA实现提供某种可由用户控制的内置缓存机制。研究如何在不需要构建单例的情况下完成你想要的任务是值得的。

单身人士和J2EE的主要问题之一是在集群环境中没有简单的方法来处理它们。所有这一切说,我确实发现了一个article,它提出了一些可能在JBoss下做你想做的事情的建议,并为EJB3.1提出了一个新的@Singleton注释,这可能是一种可能性。如果这对你有用,你应该写下你做的这个问题的另一个答案。

+0

我们已经在使用EclipseLink缓存,但是我们有几种情况,这是不够的,我们必须手动实现缓存 – tputkonen 2009-08-24 13:28:05

0

如果您在Weblogic服务器上运行,实际上也可以实现也是群集感知的单身bean。但我不相信这个功能在其他应用程序服务器上存在。