Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 跨应用程序并发哈希映射_Java_Glassfish - Fatal编程技术网

Java 跨应用程序并发哈希映射

Java 跨应用程序并发哈希映射,java,glassfish,Java,Glassfish,我正在尝试在Glassfish(v2)服务器上的应用程序之间共享并发hashmap 第一个问题,有可能吗? 第二,若有,有何建议 我试图实现的是一个内存存储(缓存?),它可以由同一实例上的不同组件快速引用和更新。实现是一个标准的键/值集 提前谢谢 很久以前对我有效的方法是将集合作为一个单独的对象放在一个库中,该库在所有应用程序中共享。通过这种方式,库只加载一次,所有应用程序都使用该副本(及其集合)听起来您需要一个分布式缓存。我建议您在上查看本文档。如果您谈论的是同一JVM中的两个“应用程序”,那

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

第一个问题,有可能吗? 第二,若有,有何建议

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


提前谢谢

很久以前对我有效的方法是将集合作为一个单独的对象放在一个库中,该库在所有应用程序中共享。通过这种方式,库只加载一次,所有应用程序都使用该副本(及其集合)

听起来您需要一个分布式缓存。我建议您在上查看本文档。

如果您谈论的是同一JVM中的两个“应用程序”,那么它肯定是可能的。如果它们在同一个类加载器中,那么您应该能够执行以下操作:

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

    public static ConcurrentHashMap<String, String> getCacheSingleTon() {
        return cache;
    }
}
公共类映射持有者{
私有静态最终ConcurrentHashMap缓存=
新的ConcurrentHashMap();
公共静态ConcurrentHashMap getCacheSingleTon(){
返回缓存;
}
}
然后,您的每个模块都可以说:

public class Foo {
    private ConcurrentHashMap<String, String> cache =
        MapHolder.getCacheSingleTon();
}
公共类Foo{
私有ConcurrentHashMap缓存=
getCacheSingleTon();
}

也就是说,我对玻璃鱼没有经验。他们可能已经有可用的缓存模块

我想也许你们可以看看这个项目。

我也推荐。这是致命的简单使用和在这里