我应该使用哪种编程模式(和产品)在 EJB 3.0 无状态会话 bean 中创建通用内存对象缓存?
如果不要求缓存是连贯的,那么在集群环境中使用静态成员变量或单例模式是否会导致任何副作用?
要缓存的数据是从 JDBC 数据源(JPA 不是一个选项)和 Web 服务中获取的。要缓存的数据量为几兆字节。缓存必须提供非常快速的读取,因此我希望解决方案应该在应用程序正在使用的 JVM 内运行。
我应该使用哪种编程模式(和产品)在 EJB 3.0 无状态会话 bean 中创建通用内存对象缓存?
如果不要求缓存是连贯的,那么在集群环境中使用静态成员变量或单例模式是否会导致任何副作用?
要缓存的数据是从 JDBC 数据源(JPA 不是一个选项)和 Web 服务中获取的。要缓存的数据量为几兆字节。缓存必须提供非常快速的读取,因此我希望解决方案应该在应用程序正在使用的 JVM 内运行。
我想唯一的解决方案是创建一个作为成员变量存储的单例。
@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;
}
}