当前位置: 首页 > 知识库问答 >
问题:

Apache Shiro EhCache初始化异常:同一VM中已经存在另一个未命名的CacheManager

薛淳
2023-03-14

我正在尝试将EhCache配置为在启用Apache Shiro的Web服务中处理授权html" target="_blank">缓存。目前我得到了以下例外:

org.apache.shiro.cache.CacheException:net.sf.ehcache.CacheException:同一VM中已存在另一个未命名的CacheManager。请为配置中的每个CacheManager提供唯一名称,或执行以下操作之一:

  1. 使用CacheManager.create()静态工厂方法之一重用相同名称的相同CacheManager或在必要时创建一个
  2. 在创建具有相同名称的新缓存之前关闭之前的缓存管理器。

这是我的雪罗。ini看起来像:

[main]   
...    
cacheManager = org.apache.shiro.cache.ehcache.EhCacheManager 
cacheManager.cacheManagerConfigFile = classpath:ehcache.xml  
securityManager.cacheManager = $cacheManager 

从这篇StackOverflow文章来看,使用Spring的人似乎已经通过强制CacheManager成为单例来解决了这个问题:同一个VM中已经存在另一个未命名的CacheManagers(ehCache 2.5)。

有人知道不使用Spring初始化的解决方法吗(我在dropwizard框架内工作,不需要拉入Spring)?是否有某种方式从shiro.ini?强制执行单例配置

提前感谢您!

共有1个答案

呼延珂
2023-03-14

创建一个扩展 EhCacheManager 的自定义类,并在构造函数中设置缓存管理器。这(net.sf.ehcache.CacheManager.create())允许您重用已经存在的缓存管理器。

package lekkie.omotayo

public class MyShiroCacheManager extends EhCacheManager
{

    public CacheManager()
    {
        setCacheManager(net.sf.ehcache.CacheManager.create());
    }
}

然后你可以这样做:

cacheManager = lekkie.omotayo.MyShiroCacheManager
cacheManager.cacheManagerConfigFile = classpath:ehcache.xml
securityManager.cacheManager = $cacheManager
 类似资料:
  • 这就是我运行junit测试时发生的情况。。。 这一例外背后的原因是什么。是否有多个cacheManager同时运行? 这就是我使用Sping 3.1.1配置cachManager的方式。它明确地将cacheManager的范围设置为“singleton” 电子缓存。xml看起来像 终于上我的课了 我非常确定我的代码库中只有一个cacheManager。其他东西可能正在运行第n个实例。

  • 似乎有另一个进程正在加载缓存,但无法定位这个(如果错误没有告诉我谎言)。它唯一告诉我的是,我有另一个缓存从一个名为InputStreamConfigurationSource的类开始??? 有人遇到过这个错误吗??? 我在用 Spring3 泽西1.6/1.7 ehCache 2.6 StackTrace Spring配置 网页xml 缓存文件 文件服务类 JSONendpoint

  • 这是网络。xml 当我检查日志时,我发现应用程序上下文被初始化了两次。我只是通过禁用dispatcher servlet的启动加载来验证它。当我禁用dispatcher servlet时,我发现异常不会在启动时出现。但它发生在我第一次尝试攻击任何控制器类时。 我在为什么Spring MVC需要至少两个上下文中发现了一些类似的问题? 在下面的链接中提到,对于Ehache2.5及更高版本,不允许同一J

  • 问题内容: 这是我运行junit测试时发生的情况… 异常背后的原因是什么?可以同时运行1个以上的cacheManager吗? 这就是我使用Sping 3.1.1配置cachManager的方式。它将cacheManager的范围明确设置为“单例” The ehcache.xml looks like Finally my class 我非常确定我在代码库中只处理一个cacheManager。其他一

  • 据我所知,在Java11中,这两个操作可以在一行中完成,不是吗?

  • 同一类型的扫描仪方法在一个地方工作,但在另一个地方不工作。。。如果这改变了任何答案,我将使用eclipse作为我的代码编辑器。如果不是在这里,所有变量都已在别处声明。 如果有人知道如何解决这个问题,我将永远感激你:) 这一个正在工作: 这个不起作用: 错误消息: