2011-11-26 133 views
10

我有2個webapps,一個admin webapp,以及實際的應用程序webapp本身。兩者都共享一個MySQL存儲,並且Ehcache用於緩存用戶詳細信息,以防止每個REST API請求的用戶查找命中後端。在兩個webapps之間共享Ehcache

我遇到的問題是管理員應用程序可以使用(很少我會添加)來更新用戶憑據,可以說密碼或用戶名,或更改一些授權級別等現在,當這種情況發生時,我需要用戶緩存失效或清除,以便主Web應用程序可以在用戶查找時點擊數據庫以將新用戶詳細信息存入緩存。

當前發生這種情況,但清除緩存對主客戶端Web應用程序不可見。

如何在兩個webapps(在jetty或tomcat中託管)之間共享一個ehcache?我目前使用Jetty,但計劃切換到Tomcat。

我正在使用Spring 3,Jersey,Hibernate,MySQL和Google Ehcache註釋。

感謝您的任何幫助。

回答

3

Ehcache有REST API,您可以將其部署爲web應用程序。這樣,管理員和應用程序webapp都可以共享緩存。

5

您有幾種選擇在這裏:

  • 您可以使用JGroups加入您的應用程序集成到一個通知 組,然後通知有關特定緩存條目 更新/無效。因此,在收到此類通知後,您的主要 網絡應用程序將更新其本地EhCache條目。
  • 您可以添加Terracotta分佈式緩存作爲EhCache 實現(它實際上不會更改您的代碼,因爲它只是012h插在EhCache API後面)。然後你的EhCache變成分佈式,所以 你的管理網絡應用程序中所做的更改對你的實際 網絡應用程序可見。 注意:兵馬俑需要商業許可。
  • 代替使用EhCache,您可以使用MemCached,它允許
    在多個應用程序中擁有一個通用緩存。因此,您的 管理Web應用程序所做的更改對您的實際Web應用程序可見。請參閱MemCached
    tutorial