关于Weblogic服务器上的集群环境的问题

时间:2010-11-19 10:16:49

标签: java weblogic

我正在使用Weblogic 10g集群环境来部署我的应用程序。在我的应用程序中,我使用了一个类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

1 个答案:

答案 0 :(得分:4)

  

(...)我认为这是因为集群环境,对于每个服务器,都有一个不同的JVM实例和一个缓存副本。

这是正确的。

  

我希望在服务器之间有一个缓存。这可能吗?

您可以实现weblogic.cluster.singleton.SingletonService单件服务是在托管服务器上运行的服务,一次只能在群集的一个成员上使用)。

资源

相关问题