web-applications - 在两个 webapps 之间共享 Ehcache

标签 web-applications rest tomcat jersey ehcache

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

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

目前会发生这种情况,但缓存的清除对于主客户端 web 应用程序是不可见的。

如何在两个 web 应用程序之间共享一个 ehcache(同时托管在 jetty 或 tomcat 中)?我目前正在使用 Jetty,但打算切换到 Tomcat。

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

感谢您的帮助。

最佳答案

这里有几个选项:

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

关于web-applications - 在两个 webapps 之间共享 Ehcache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8275370/

相关文章:

java - Spring-Security-OAuth2 中的 grant_type

java - 如何配置在 Tomcat 容器中运行的 Java Servlet 以提供 HTML 文件(无 JSP)

java - 从 eclipse 导出为 war 并添加其他文件

java - 是否可以使用 javascript 书签来调用本地存储/本地托管的 Java 小程序?

Django Rest Swagger 与 APIView

java - 与数据库连接的简单jsp

tomcat - Grails 数据表和 Tomcat 选择不起作用

java - 从 java web 应用程序访问 linux 本地文件系统

tomcat - 从 Tomcat 上下文中提供文件

android - 使用 GoogleApiClient 进行 REST API 调用