在两个webapps之间共享Ehcache

时间:2011-11-26 00:23:10

标签: web-applications rest tomcat jersey ehcache

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

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

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

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

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

这里有几个选项:

  • 您可以使用JGroups将您的应用加入一个通知中 组,然后通知有关特定的缓存条目 更新/无效。所以收到这样的通知你的主要 网络应用程序将更新其本地EhCache条目。
  • 您可以将Terracotta分布式缓存添加为EhCache 实现(它实际上不会改变你的代码,因为它只是 插入EhCache API后面)。那么你的EhCache就会变得分散,所以 您的管理员网络应用程序中所做的更改对您的实际可见 网络应用。 注意: Terracotta需要商业许可。
  • 您可以使用允许使用的MemCached代替使用EhCache 在多个应用程序中有一个共同的缓存所以你的改变了 您可以在实际的网络应用中看到管理员网络应用。请参阅MemCached
    tutorial

答案 1 :(得分:3)

Ehcache有REST API你可以部署为webapp。这样,管理员和应用程序webapp都可以共享缓存。