【发布时间】: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