【问题标题】:Cross-application Concurrent Hashmap跨应用并发Hashmap
【发布时间】:2011-12-09 14:42:25
【问题描述】:

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

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

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

提前致谢!

【问题讨论】:

    标签: java glassfish


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        我也推荐Hazelcast。它使用起来非常简单,在这里some comparison

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

            【讨论】:

              猜你喜欢
              • 2010-11-03
              • 2015-11-26
              • 1970-01-01
              • 1970-01-01
              • 2018-12-15
              • 1970-01-01
              • 2013-03-12
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多