Java Weblogic服务器集群环境的一个问题

Java Weblogic服务器集群环境的一个问题,java,weblogic,Java,Weblogic,我正在使用Weblogic 10g群集环境部署我的应用程序。在我的应用程序中,我使用了一个类Cache.java从数据库惰性地加载一些属性。这就是它的工作原理

我正在使用Weblogic 10g群集环境部署我的应用程序。在我的应用程序中,我使用了一个类
Cache.java
从数据库惰性地加载一些属性。这就是它的工作原理是一个以实例变量作为缓存对象的单例类。例如,其中一个实例变量是
List STORES\u IN\u 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;
    }
}
公共类缓存
{
城市中的私人列表商店;
私有静态最终缓存=新缓存();
公共静态缓存getCache()
{
返回缓存;
{
专用缓存()
{
//私有构造函数具有单例类
}
公共列表getStoresInCity()
{
if(null==STORES_IN|u CITY | STORES_IN_CITY.size()==0){
STORES_IN_CITY=getStoresFromDatabase();
}
返回城市的门店;
}
}
我这里的问题是,有多个对数据库的调用来获取城市中的缓存存储。我相信这是因为集群环境,对于每个服务器,都有一个不同的JVM实例和一个缓存副本。因此,根据运行时请求命中的服务器,会进行数据库调用。我希望有一个跨服务器缓存。这可能吗

我希望我已经对我的问题做了充分的阐述。如果需要进一步的解释,请让我知道

谢谢, 悉达思

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

这是正确的

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

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

资源
相关问题

非常感谢!这会有帮助。另外,是否有一个通用API可用于所有符合J2EE的服务器?@SidCool不是真的(尽管Java EE 6引入了@Singleton EJB,但集群中的行为没有指定)。JBoss缓存和Hibernate缓存呢?我不太确定它们是用于什么。