【问题标题】:A question on clustered environment on Weblogic server关于Weblogic服务器集群环境的问题
【发布时间】:2010-11-19 10:16:48
【问题描述】:

我正在使用 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 实例和缓存副本。因此,根据在运行时针对请求命中哪个服务器,进行数据库调用。我想跨服务器有一个缓存。这可能吗?

我希望我已经详细说明了我的问题。如果需要任何进一步的解释,请告诉我。

谢谢, 悉达多

【问题讨论】:

    标签: java weblogic


    【解决方案1】:

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

    这是正确的。

    我想要跨服务器的单一缓存。这可能吗?

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

    资源

    相关问题

    【讨论】:

    • 非常感谢!这会有所帮助。此外,是否有适用于所有 J2EE 兼容服务器的通用 API?
    • @SidCool 不是真的(虽然 Java EE 6 引入了@Singleton EJB,但没有指定集群中的行为)。
    • JBoss 缓存和 Hibernate 缓存呢?我不太确定它们的用途。
    猜你喜欢
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多