我正在尝试在Glassfish(v2)服务器上的应用程序之间共享并发哈希映射。
第一个问题,是否可能? 其次,如果是,有什么建议吗?
我想要实现的是内存存储(缓存?),可以由同一实例上的不同组件快速引用和更新。实现是标准的键/值集。
提前致谢!
答案 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没有经验。他们可能已经拥有可用的缓存模块。