【问题标题】:How to implement Singleton-like EJB3.0 bean?如何实现Singleton-like EJB3.0 bean?
【发布时间】:2009-08-24 13:13:49
【问题描述】:

我需要实现一个简单的 DAO bean,它还缓存从数据库读取的数据。这个 DAO bean 被无状态 bean 使用。

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

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

【问题讨论】:

    标签: java singleton ejb-3.0


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      大多数应用程序服务器和 JPA 实现都提供了某种由用户控制的内置缓存机制。可能值得研究在不必构建单例的情况下完成您想要的事情的方法。

      单例和 J2EE 的主要问题之一是在集群环境中没有简单的方法来处理它们。

      话虽如此,我确实找到了一个article,它为可能在JBoss 下做你想做的事情提出了一些建议,并提到了一个新的@Singleton EJB3.1 注释,所以这可能是一种可能性。如果这对你有用,你应该写下你做了什么作为这个问题的另一个答案。

      【讨论】:

      • 我们已经在使用 EclipseLink 缓存,但是在一些情况下它还不够,我们必须手动实现缓存
      【解决方案3】:

      如果您在 Weblogic 服务器上运行,实际上可以实现一个也支持集群的单例 bean。我不相信这个功能存在于其他应用服务器上。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-03
        • 1970-01-01
        相关资源
        最近更新 更多