在两个webapps之间共享Ehcache

use*_*022 10 rest tomcat web-applications ehcache jersey

我有2个webapps,一个管理员webapp,以及实际的应用程序webapp本身.两者共享对mysql存储的访问权限,而Ehcache用于缓存用户详细信息,以防止用户按REST API请求查找后端.

我的问题是可以使用管理员应用程序(很少我会添加)来更新用户凭据,让我们说密码或用户名,或更改一些授权级别等.现在,当发生这种情况时,我需要用户缓存无效或清除,以便主用户可以在用户查找时访问数据库,以便将新用户详细信息放入缓存中.

目前正在发生这种情况,但主客户端webapp无法清除缓存.

如何在两个webapps之间共享一个ehcache(在jetty或tomcat中托管)?我目前正在使用Jetty,但计划切换到Tomcat.

我正在使用Spring 3,Jersey,Hibernate,MySQL和Google Ehcache注释.

谢谢你的帮助.

use*_*575 6

你有几个选择:

  • 您可以使用JGroups将应用程序加入一个通知组,然后通知特定的缓存条目更新/失效.因此,收到此类通知后,您的主Web应用程序将更新其本地EhCache条目.
  • 您可以添加Terracotta分布式缓存作为EhCache实现(它实际上不会更改您的代码,因为它只是插入EhCache API后面).然后,您的EhCache将变为分布式,以便您的管理Web应用程序中所做的更改对您的实际Web应用程序可见.注意: 兵马俑需要商业许可证.
  • 您可以使用MemCached而不是使用EhCache ,它允许
    在多个应用程序之间使用一个公共缓存.因此,您的管理Web应用程序中所做的更改对您的实际Web应用程序是可见的.请参阅MemCached
    教程


小智 3

Ehcache 有一个REST API,您可以将其部署为 Web 应用程序。这样,管理员和应用程序 Web 应用程序就可以共享缓存。