跨应用程序并发哈希图



我正在尝试在Glassfish (v2)服务器上的应用程序之间共享并发hashmap。

第一个问题,这有可能吗?第二,如果是,有什么建议吗?

我想要实现的是一个内存存储(缓存?),可以在同一实例上的不同组件快速引用和更新。实现是一个标准的键/值集。

提前感谢!

听起来你想要一个分布式缓存。我建议你看看Ehcache和这个关于缓存拓扑的文档。

我想你可以看看Hazelcast项目

我也推荐Hazelcast。使用起来非常简单,这里有一些比较

很久以前对我有效的方法是将集合作为单例放在库中,并在所有应用程序之间共享。这样,库只加载一次,所有应用程序都使用该副本(及其集合)

如果您谈论的是同一个JVM中的2个"应用程序",那么这当然是可能的。如果它们在同一个ClassLoader中,那么你应该可以这样做:

public class MapHolder {
    private static final ConcurrentHashMap<String, String> cache =
        new ConcurrentHashMap<String, String>();
    public static ConcurrentHashMap<String, String> getCacheSingleTon() {
        return cache;
    }
}

然后你的每个模块都可以这样说:

public class Foo {
    private ConcurrentHashMap<String, String> cache =
        MapHolder.getCacheSingleTon();
}

这就是说,我对Glassfish没有经验。它们可能已经有可用的缓存模块。

最新更新