2012-02-20 62 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

相关问题