【问题标题】:Is Guava Cache allowed to be used in EJB 3.0是否允许在 EJB 3.0 中使用 Guava Cache
【发布时间】:2015-02-27 14:18:28
【问题描述】:

在我们的项目中,我们想为 LDAP 信息创建一个缓存,看来 Guava 是一个不错的选择。

但是,由于我们使用的是 EJB 3.0,因此我有些担心。

基本上,我们有一个 UserDAO 类,负责获取必要的 LDAP 信息,并且在 UserDAO 中将 Guava Cache 声明为静态。

我可以简单地在 ejbs 中使用这个 UserDAO 吗?我有两个担忧: 1. ejb不允许读/写静态字段,以防ejb在多个JVM中运行。 UserDAO 已经有了静态缓存。 2. ejb 不允许生成用户自己的线程,我认为这条规则延伸到不使用 MultiThread 库?我不确定 Guava Cache 是如何实现的?

谢谢!

【问题讨论】:

  • 从技术上讲,线程管理由 Guava 执行:您无需自己执行管理。另外,避免static,尝试使用@Singleton 来包装你的缓存实现。例如,看看blog.iadvise.eu/2014/01/13/…
  • 谢谢奥利维尔!但是,我猜,@Singleton 在 ejb 3.0 中尚不可用。另外,即使是 Guava 管理线程,它们仍然是 ejb 容器不知道的线程?

标签: multithreading caching static ejb-3.0 guava


【解决方案1】:

我认为在 EJB 中使用 Guava Cache 不合适。

虽然 Guava Cache 没有创建新的 Thread,但它管理着 Thread。缓存中有sychronized 块和ReentrantLock。所以这不是 EJB 中的正确行为。

【讨论】:

    猜你喜欢
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    相关资源
    最近更新 更多