CacheManager 属性已设置 - Apache Shiro
Posted
技术标签:
【中文标题】CacheManager 属性已设置 - Apache Shiro【英文标题】:CacheManager properties have been set- Apache Shiro 【发布时间】:2012-02-04 00:04:48 【问题描述】:如何在使用 Apache shiro 时设置 cacheManager 属性。在调试时,我得到了类似的信息,
80104 [1045903843@qtp-967078155-3] INFO org.apache.shiro.realm.AuthorizingRealm - No cache or cacheManager properties have been set. Authorization cache cannot be obtained.
我正在使用 JSF2 和 Google Cloud SQL。
【问题讨论】:
【参考方案1】:如果使用 Shiro 的 INI 配置,您可以像设置任何其他 bean 属性一样设置 SecurityManager 的 cacheManager 属性。例如:
[main]
cacheManager = com.something.impl.SomeCacheManager
# config cacheManager as necessary, e.g.
# cacheManager.foo = bar
securityManager.cacheManager = $cacheManager
您可以使用开箱即用的 EhCacheManager 或自己实现 CacheManager
和 Cache
接口以使用自定义缓存后备存储(例如 Memcache、Coherence、GigaSpaces、任何现代 NoSQL 键/值存储,等等……)
【讨论】:
【参考方案2】:似乎 EhCacheManager 不是 shiro-core 1.2.1 的一部分(无论如何在 Maven 包中)。我通过将以下内容添加到 shiro.ini 中的 [main] 部分解决了这个问题:
[main]
builtInCacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager
securityManager.cacheManager = $builtInCacheManager
【讨论】:
嗨,Allan - 我们不能强制所有 Shiro 用户依赖 Ehcache,因此 Ehcache 支持以plugin 的形式提供。只需将它添加到您的运行时类路径中,您就可以立即使用 EhCacheManager。 HTH! 啊,不知道。我虽然当你提到它是开箱即用的,它包含在核心库中。谢谢!以上是关于CacheManager 属性已设置 - Apache Shiro的主要内容,如果未能解决你的问题,请参考以下文章
Grails ehcache 插件 - 另一个未命名的 CacheManager 已存在于同一 VM 中
grails 2.5:使用多个数据源时,“另一个未命名的 CacheManager 已存在于同一 VM 中”
Apache Shiro EhCache 初始化异常:另一个未命名的 CacheManager 已存在于同一个 VM 中