我正在尝试将 EhCache 配置为在启用了 Apache Shiro 的 Web 服务中处理授权缓存。目前我收到以下异常:
org.apache.shiro.cache.CacheException: net.sf.ehcache.CacheException: 另一个未命名的 CacheManager 已经存在于同一个 VM 中。请为配置中的每个 CacheManager 提供唯一名称或执行以下操作之一:
- 使用 CacheManager.create() 静态工厂方法之一来重用具有相同名称的相同 CacheManager 或在必要时创建一个
- 在创建具有相同名称的新缓存管理器之前关闭早期的缓存管理器。
我的 shiro.ini 看起来像:
[main]
...
cacheManager = org.apache.shiro.cache.ehcache.EhCacheManager
cacheManager.cacheManagerConfigFile = classpath:ehcache.xml
securityManager.cacheManager = $cacheManager
从这个 StackOverflow 帖子看来,使用 Spring 的人已经通过强制 CacheManager 成为单例解决了这个问题:另一个未命名的 CacheManager 已经存在于同一个 VM (ehCache 2.5)中。
是否有人知道不使用 Spring 初始化的变通办法(我在 dropwizard 框架中工作并且不需要引入 Spring)?是否有某种方式从 shiro.ini 强制执行单例配置?
先感谢您!