我正在使用Weblogic 10g集群环境来部署我的应用程序。在我的应用程序中,我使用了一个名为
我的问题是,为了获取缓存STORES_IN_CITY,需要多次调用数据库。我认为这是因为集群环境的原因,因为每个服务器都有一个不同的JVM实例和缓存副本。因此,在运行时取决于哪个服务器被请求命中,就会进行数据库调用。我希望在所有服务器之间拥有单个缓存。这种可能吗?
我希望我已经详细阐述了我的问题。如果需要进一步解释,请让我知道。
谢谢, Siddharth
Cache.java
的类,从数据库中惰性地加载一些属性。它的工作原理如下:Cache.java
是一个单例类,其实例变量是缓存对象。例如,其中一个实例变量是 List<String> STORES_IN_CITY
。当集群启动时,此缓存为空值。实际值位于数据库中。以下是该类的实现:public class Cache
{
private List<String> STORES_IN_CITY;
private static final Cache cache=new Cache();
public static Cache getCache()
{
return cache;
{
private Cache()
{
// private constructor to have singleton class
}
public List<String> getStoresInCity()
{
if(null==STORES_IN_CITY || STORES_IN_CITY.size()==0){
STORES_IN_CITY=getStoresFromDatabase();
}
return STORES_IN_CITY;
}
}
我的问题是,为了获取缓存STORES_IN_CITY,需要多次调用数据库。我认为这是因为集群环境的原因,因为每个服务器都有一个不同的JVM实例和缓存副本。因此,在运行时取决于哪个服务器被请求命中,就会进行数据库调用。我希望在所有服务器之间拥有单个缓存。这种可能吗?
我希望我已经详细阐述了我的问题。如果需要进一步解释,请让我知道。
谢谢, Siddharth