2010-08-19 1 views
3

В настоящее время я работаю над переносом веб-приложения для работы в кластере. Это приложение использует кеши. Некоторые из этих кэшей перезагружаются, если пользователь что-то сохраняет. Я хотел бы сообщить об этом другим узлам кластера, чтобы все узлы обновляли свои кеши.Как реализовать синхронизацию кеша в кластерной среде tomcat 6.0?

Похоже, что сервер tomcat имеет сборку групповых сообщений. (Tribes) Мне интересно, могу ли я использовать этот обмен сообщениями для своей задачи и как запустить прослушиватель событий весь день.

с наилучшими пожеланиями Майкла

+0

Как реализуется в настоящее время кэш? Ehcache? Или что-то написанное вручную? – skaffman

+0

Кэш (ы) являются рукописными и частично используют сервлетконтекст или файловую систему, а также статические поля. – Michael

ответ

0

Можно использовать его и нет никакой необходимости, чтобы начать нить или тому подобные. Для отправки экземпляров класса требуется банка класса сообщений в каталоге tomcat lib.

веселит Michae

0

Вы можете использовать Hazelcast тему. Это очень легкий паб/суб-сообщения. Каждый узел будет прослушивать тему. Когда пользователь сохраняет smth на любом узле, просто добавьте сообщение «REFRESH». При получении каждый узел может делать все, что вы хотите. Вот код, чтобы сделать это:

String REFRESH = "REFRESH"; 
ITopic<String> topic = Hazelcast.getTopic("myTopic"); 
topic.addMessageListener(new MessageListener<String>() { 
     public void onMessage(String msg) { 
      if(REFRESH.equals(msg){ 
      //do refresh 
      } 
     } 
    }); 

// когда пользователь сохраняет н.
topic.publish (REFRESH);

0

Если вы используете рукописный CACHE, то вы можете синхронизировать кеш B/W всех узлов кластера с помощью широковещания/приема сообщений, для этого вы можете использовать JGROUP.

напр: узел А кэш обновлений, что он просто вразброс сообщение другому узлу, чтобы пополнить (refresh) их кэш