Кросс-приложение Concurrent Hashmap - PullRequest
2 голосов
/ 09 декабря 2011

Я пытаюсь разделить одновременную хэш-карту между приложениями на сервере Glassfish (v2).

Первый вопрос, возможно ли это вообще?Во-вторых, если да, то какие-нибудь предложения?

Я пытаюсь добиться хранилища памяти (кеша), на которое можно быстро ссылаться и обновлять различные компоненты в одном экземпляре.Реализация - это стандартный набор ключ / значение.

Заранее спасибо!

Ответы [ 5 ]

2 голосов
/ 09 декабря 2011

Звучит так, как будто вы хотите распределенный кеш. Я бы порекомендовал посмотреть Ehcache и эту документацию по топологиям кэша .

1 голос
/ 12 декабря 2011

Я также рекомендую Hazelcast .Это смертельно просто в использовании и здесь некоторое сравнение

1 голос
/ 09 декабря 2011

Я думаю, что вы можете взглянуть на проект Hazelcast .

0 голосов
/ 09 декабря 2011

Если вы говорите о двух «приложениях» в одной и той же JVM, то это, безусловно, должно быть возможно.Если они находятся в одном и том же 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.Они могут уже иметь доступные модули кэширования.

0 голосов
/ 09 декабря 2011

Давным-давно у меня работало размещение коллекции в виде одиночного файла в библиотеке, которая используется всеми приложениями.Таким образом, библиотека загружается один раз, и все приложения используют эту копию (и ее коллекцию)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...