【问题标题】:sharing Ehcache between two webapps在两个 webapps 之间共享 Ehcache
【发布时间】:2012-01-06 16:53:15
【问题描述】:

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

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

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

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

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

感谢您的帮助。

【问题讨论】:

    标签: web-applications rest tomcat jersey ehcache


    【解决方案1】:

    你有几个选择:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-02
        • 1970-01-01
        • 1970-01-01
        • 2012-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多