跨应用程序并发Hashmap

时间:2011-12-09 14:42:26

标签: java glassfish

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

第一个问题,是否可能? 其次,如果是,有什么建议吗?

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

提前致谢!

5 个答案:

答案 0 :(得分:2)

听起来你想要一个分布式缓存。我建议在Ehcache上查看cache topologies和此文档。

答案 1 :(得分:1)

我想也许你可以看看Hazelcast项目。

答案 2 :(得分:1)

我还建议Hazelcast。使用起来非常简单,这里some comparison

答案 3 :(得分:0)

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

答案 4 :(得分:0)

如果你在同一个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没有经验。他们可能已经拥有可用的缓存模块。