tomcat - Apache shiro - 我怎么知道缓存正在为授权工作?

标签 tomcat ehcache shiro

我在我的 Tomcat 中使用 Apache Shiro,我想通过 EhCache 启用授权缓存。

我所做的是在 shiro.ini 中添加这两行:

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

并在我的 WEB-INF/lib 目录中复制了 ehcache-core-2.5.1.jar。对于授权,我实现了一个自定义领域,它从 MySQL 数据库读取权限。所以我想启用缓存以尽可能减少对数据库的查询......不得不说我对EhCache不熟悉,我只想启用授权缓存!

如果我正确理解了 Shiro 文档,以上内容足以启用缓存 - 但是我没有看到 :(

Tomcat 无异常启动,在我使用授权的测试 JSP 中,一开始工作正常。如果我对数据库的权限进行了更改,我会看到测试 JSP 会立即意识到更改!我原以为测试 JSP 会从缓存中返回值...您能告诉我哪里出了问题吗?另外,有没有办法查明是否实际调用了 EhCache 以及它的行为方式(如果需要启用日志记录,如果您能提供详细信息,我将不胜感激,因为我对此不是很熟悉)。

更新:我还必须提到我添加了这一行

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

在我的自定义领域的初始化中,我得到了 true!

TIA,

塞拉菲姆

最佳答案

就我个人而言,我不了解Shiro,也不了解Tomcat,但我对EHCache 有一定的了解。我知道 API 支持缓存更新。根据 Shiro 使用 EHCache 的方式,它可能会在缓存信息发生变化时更新它。您的 JSP 显示它已更新并不能证明缓存正在或不工作。

在编程中,插入代码来捕获 EHCache 的统计信息相当容易,但我不确定以这种方式集成时您会如何。当封闭的应用程序被设置为高日志记录级别时,EHCache 有内置的日志记录,但我在 2.5.1 中无法让它工作。 EHCache 的日志记录设置在此处描述:http://ehcache.org/documentation/operations/logging ,但我不知道您将如何设置 Shiro 来输出消息。

希望对您有所帮助。

关于tomcat - Apache shiro - 我怎么知道缓存正在为授权工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9359322/

相关文章:

oracle - Tomcat GlobalNamingResources ResourceLink Oracle 获取数据源

Hibernate 二级缓存示例

java - Apache Shiro - Maven 项目中的主题始终为空

eclipse - 如何在tomcat上配置gwt应用程序进行调试?

apache - 将 HTTP 重定向到 HTTPS :PORT in Tomcat

java - 使用来自共享类加载器的 EHCache 时出现 ClassCastException

java - 无法使用 Shiro 运行登录表单

java - Apache shiro 和 JSESSIONID

tomcat - 用tomcat测试数据

java - ehcache 磁盘存储中的元素不会过期