Как запустить код на двух разных серверах в кластере WAS? - PullRequest
0 голосов
/ 08 июня 2010

У меня есть административная страница в веб-приложении, которое сбрасывает кеш, но только кеш сбрасывает текущую JVM.

Веб-приложение развернуто как кластер на двух серверах WAS.

В любом случае, если у меня есть элегантная кнопка «очистить кеш» на каждом сервере, вызовите метод на обеих виртуальных машинах?

Редактировать : Первоначальный разработчик только что написал синглтон, содержащий HashMap, в качестве рассматриваемого кэша. Легкий и (ранее) работал просто отлично для требований. Он кэширует контент, извлеченный из шести или семи веб-сервисов в течение заданного времени.

Редактировать : Все рассматриваемое приложение занимает три страницы, поэтому элегантное решение вполне может оказаться самым легким решением.

Ответы [ 2 ]

1 голос
/ 08 июня 2010

Поскольку кэш-память является внутренней для вашего приложения, вам потребуется предоставить интерфейс, чтобы очистить его в вашем приложении. Quotidian говорит использовать очередь JMS. Это не будет работать, потому что только один экземпляр получит сообщение, предполагая, что у вас есть кластеризованные очереди MQ.

Если вы хотите повторно использовать ту же реализацию, то единственный способ сделать это - написать JMX, с которым вы сможете взаимодействовать на уровне экземпляра.

Если нет, вы можете либо использовать встроенный кэш WAS (с поддержкой JMX), либо использовать распределенный кеш, такой как ehcache.

В прошлом я создал подклассную LinkedHashMap, которая была связана со всеми экземплярами в сети с помощью JBOSS JGroups . Конечно, изобретать велосипед всегда больно.

1 голос
/ 08 июня 2010

Я склонен использовать JMS очередь для выполнения именно этого.

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