【问题标题】:Caching objects in EJB 3.0在 EJB 3.0 中缓存对象
【发布时间】:2012-11-04 00:50:33
【问题描述】:
我应该使用哪种编程模式(和产品)在 EJB 3.0 无状态会话 bean 中创建通用内存对象缓存?
如果不要求缓存保持一致,在集群环境中使用静态成员变量或单例模式是否会导致任何副作用?
要缓存的数据是从 JDBC 数据源(JPA 不是一个选项)和 Web 服务中获取的。要缓存的数据量为几兆字节。缓存必须提供非常快速的读取,因此我希望解决方案应该在应用程序正在使用的 JVM 中运行。
【问题讨论】:
标签:
caching
ejb-3.0
stateless-session-bean
【解决方案1】:
我想唯一的解决方案是创建一个作为成员变量存储的单例。
@Stateless
public class MyBean {
private CacheManager cacheManager;
@PostConstruct
public void initialize() {
cacheManager = CacheManager.getInstance();
}
}
public class CacheManager {
private static CacheManager instance;
public synchronized getInstance() {
if (instance == null) {
instance = new CacheManager()
}
return instance;
}
}