Совместное использование Ehcache между двумя webapps
У меня есть 2 webapps, admin webapp и фактическое приложение webapp. Оба имеют общий доступ к хранилищу mysql, а Ehcache используется для кэширования данных пользователя, чтобы предотвратить попадание пользователя в бэкэнд на запрос REST API.
Проблема заключается в том, что приложение администратора можно использовать (редко добавляю) для обновления учетных данных пользователей, позволяет указать пароль или имя пользователя или изменить уровень авторизации и т.д. Теперь, когда это произойдет, мне нужен пользователь кеш недействителен или очищен, так что главный веб-папок может попасть в db при поиске пользователя, чтобы получить новые данные пользователей в кеш.
В настоящее время это происходит, но очистка кеша не видна главному клиенту webapp.
Как я могу поделиться ehcache между двумя webapps (размещенными как в причале, так и в tomcat)? В настоящее время я использую Jetty, но планирую перейти на Tomcat.
Я использую аннотации Spring 3, Джерси, Hibernate, MySQL и Google Ehcache.
спасибо за любую помощь.
Ответы
Ответ 1
У вас есть несколько вариантов:
- Вы можете использовать JGroups, чтобы присоединиться к вашим приложениям в одно уведомление
group, а затем уведомлять об определенной записи в кеше
обновление/недействительность. Поэтому, получив такое уведомление,
веб-приложение обновит свою локальную запись EhCache.
- Вы можете добавить Terracotta распределенный кеш как EhCache
(он фактически не изменяет ваш код, поскольку он просто
подключается за API EhCache). Затем ваш EhCache распространяется, поэтому
что изменения, внесенные в ваше веб-приложение администратора, видны вашим действительным
веб-приложение. Примечание: Терракота требует коммерческой лицензии.
- Вместо использования EhCache вы можете использовать MemCached, что позволяет использовать
имея один общий кэш среди нескольких приложений. Таким образом, изменения, внесенные в ваш
веб-приложение администратора отображается в вашем реальном веб-приложении. Посмотрите MemCached
учебник
Ответ 2
Ehcache имеет REST API, который можно развернуть как webapp. Таким образом, как администратор, так и приложение webapp могут совместно использовать кеш.