2012-02-20 39 views
1

我在Tomcat中使用Apache Shiro,我想通過EhCache啓用授權緩存。Apache shiro - 我如何知道緩存正在授權?

我做什麼shiro.ini是增加兩行:

 
cacheManager = org.apache.shiro.cache.ehcache.EhCacheManager 
securityManager.cacheManager = $cacheManager 

,在我的WEB-INF/lib目錄下複製的Ehcache核-2.5.1.jar。對於授權,我已經實現了一個從MySQL數據庫中讀取權限的定製Realm。所以我想啓用緩存以儘可能減少對數據庫的查詢......我不得不提到我對EhCache不熟悉,我只想啓用授權的緩存!

如果我四郎文件理解正確的話,上面都足以使高速緩存 - 但是我沒有看到那個:(

Tomcat啓動時不會例外,並且在測試JSP我使用授權作品如果我修改了數據庫的權限,我看到測試JSP立即意識到了這個改變!我期待測試JSP會從緩存中返回值...你能告訴我有什麼可能是錯誤的?還有,有沒有辦法找出EhCache是​​否真的被調用,以及它是如何運行的(如果需要啓用日誌記錄,如果你提供了詳細的信息,我會很感激,因爲我不太熟悉) 。

更新:我也有提到,我增加了行

System.out.println("Caching is enabled " + isCachingEnabled());

在我的自定義領域的初始化和我真的!

TIA,

Serafeim

回答

1

就個人而言,我不知道四郎,我不知道Tomcat的好,但我的EHCache有一個公平的理解。我知道API支持緩存更新。根據Shiro使用EHCache的方式,它可能會隨時更新緩存的信息。顯示它的JSP更新並不能證明緩存是否正常工作。

在編程中,插入代碼來捕獲EHCache的統計信息是相當容易的,但我不確定如何以這種方式進行集成。當封閉應用程序設置爲高日誌記錄級別時,EHCache具有內置日誌記錄功能,但在2.5.1版本中工作時遇到問題。 EHCache的記錄設置如下:http://ehcache.org/documentation/operations/logging,但我不知道如何設置Shiro輸出消息。

我希望有幫助。

1

使用jconsole觀察EHCache的JMX統計信息。

  1. 來啓動JConsole
  2. 打開MBeans標籤
  3. 在左側,打開 「net.sf.ehcache」 樹。
  4. 導航到net.sf.ehcache/CacheStatistics/[您的緩存名稱,默認爲net.sf.ehcache。CacheManager的@ SOME_ID]
  5. 查找緩存的名字,打開了樹,並選擇「屬性」

現在,你可以看看你的緩存的屬性。玩你的應用程序,並觀察「CacheHits」和「ObjectCount」變量是否應該改變。 ObjectCount是ehcache在任何給定時間緩存的所有項目; CacheHits顯示你是否正在使用這些項目。

您也可以遠程執行此操作,但會變得有點多毛 - 您需要通過SOCKS代理對JConsole進行通道。本文詳細介紹了執行該操作的步驟:http://simplygenius.com/2010/08/jconsole-via-socks-ssh-tunnel.html