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

2024-03-14

我正在尝试将 EhCache 配置为处理启用 Apache Shiro 的 Web 服务中的授权缓存。目前我收到以下异常:

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

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

我的 shiro.ini 看起来像:

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

从 StackOverflow 的这篇文章来看,使用 Spring 的人们已经通过强制 CacheManager 成为单例来解决这个问题:同一虚拟机中已存在另一个未命名的 CacheManager (ehCache 2.5) https://stackoverflow.com/questions/10013288/another-unnamed-cachemanager-already-exists-in-the-same-vm-ehcache-2-5.

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

先感谢您!


创建一个扩展 EhCacheManager 的自定义类,并在构造函数中设置您的 cacheManager。这个(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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • mobile safari 如何确定何时提示用户共享位置?

    我有一个移动网络应用程序 我想跟踪用户的最新位置 但前提是他们位于某个区域 但是 iPhone 上出现过多的提示有点麻烦 有一些位置初始化代码 大致如下 if firstTime navigator getCurrentPosition f
  • Spark DataFrame 中将 null 值转换为空数组

    我有一个 Spark 数据框 其中一列是整数数组 该列可以为空 因为它来自左外连接 我想将所有空值转换为空数组 这样以后就不必处理空值了 我想我可以这样做 val myCol df myCol df withColumn myCol whe
  • CSS 三角形填充进度条

    我实际上用谷歌搜索并搜索了一些信息 但找不到 My aim is to achieve something similar to progress bar styling such as filling inside of triangle
  • 有什么好的库可以读取和写入 csv 文件吗? [复制]

    这个问题在这里已经有答案了 可能的重复 Java 的 CSV API https stackoverflow com questions 101100 csv api for java 您能推荐一个用于读取 也可能写入 CSV 文件的 Ja
  • AJAX 请求返回 unicode 字符作为问号

    我有 AJAX 调用以下 PHP 脚本 然后我使用以下 JavaScript 调用该脚本 AJAX function url data callback var a new XM
  • 如何将矩阵划分为大小不等的子矩阵?

    我想知道是否可以使用mat2cell函数来划分MxN将矩阵分成 10 个具有相同列大小的子矩阵 N 并且行大小大致相同 M 10 If mod M 10 0那么所有子矩阵将具有相同的大小 否则一些矩阵将具有 1 行 这可以通过mat2cel
  • 调用 YouTube 应用程序打开 Youtube 频道 (Android)

    我想打开显示特定频道的 YouTube 应用程序 但这仅执行浏览器 try Intent intent new Intent Intent ACTION VIEW intent setData Uri parse http www yout
  • 如何在 Python 中使用多个字符串参数

    我想使用 s 将两个参数传递给我的字符串 我尝试了这个 但没有成功 title im s with s title programming python 它给出了这个错误 Traceback most recent call last Fi
  • 无法调用网络服务

    我目前正在尝试使用使用 Apache CXF 构建的客户端来调用 Web 服务 尽管该服务在浏览器中可用 但由于以下错误 我无法连接到它 关于这个问题有什么想法吗 org apache cxf phase PhaseInterceptorC
  • 使用 get_posts 显示 WordPress 帖子 - 第一篇帖子不显示日期

    您好 我正在使用 get posts 来获取所有标记为 新闻 的帖子并将其显示在给定页面上 我使用 the date 来获取日期 但奇怪的是第一篇文章没有显示日期 而此后的所有文章都显示日期 此外 我还使用了相同的代码在另一个页面上显示标记
  • 按钮边距的布局问题

    我在 Android 应用程序中组织布局时遇到问题 我正在动态创建按钮并使用此代码将它们添加到我的布局中 LayoutInflater layoutInflater LayoutInflater getBaseContext getSyst
  • 如何在 R 中 gsub 一个空的“”字符串?

    如何替换空字符串 This x c b gsub taco x 产生 taco tacobtaco 代替 taco b 有什么办法可以替换空字符串吗 我会用nchar here x nchar x 0 lt taco EDIT 如果您正在寻
  • 如何获取ServiceState的实例?

    我正在尝试获取一个实例ServiceState in my Activity 但我该怎么做呢 没有静态方法可以获取实例 也没有任何服务上的任何方法返回ServiceState实例 有的是TelephonyManager listen 称呼
  • 如何在 Laravel 模型上设置属性的默认值[重复]

    这个问题在这里已经有答案了 如何在 Laravel 模型上设置属性的默认值 我应该在创建迁移时设置默认值还是应该在模型类中设置它 您还可以在模型中设置默认属性 gt protected attributes status gt self S
  • 部署闪亮应用程序时出错

    我正在尝试将闪亮的应用程序部署到闪亮的服务器中 但出现此错误 Error HTTP 400 POST https api shinyapps io v1 applications Validation Error 在控制台写入后 shiny
  • 在 PHP 中使用大括号构建代码

    是否可以将 PHP 中的代码片段括在括号内 不使用片段作为函数 以下代码的行为是否与没有大括号时的行为相同 或者根据括号内部或外部使用的代码类型可能会出现任何问题 例如 这将是 始终以与此相同的方式行事 Update 正如 My1 的评论中
  • WebClient 的 bodyToMono 对空主体的预期行为

    当 WebClient bodyToMono 遇到空主体时 预期的行为是什么 在我的具体示例中 我们正在检查从调用后返回的状态 如果是错误 则将其转换为我们的自定义错误格式 如果转换为自定义错误格式失败 我们会以自定义格式创建一个新错误来说
  • 代码段的时间复杂度

    从在线笔记中 我读到了以下用于反转字符串的java代码片段 据称该代码片段具有二次时间复杂度 在我看来 i 的 for 循环只是迭代 s 的整个长度 它如何导致二次时间复杂度 public static String reverse Str
  • 将项目上传到 Azure Devops

    我正在尝试将现有的 Visual Studio 项目代码推送到 Azure DevOps 服务器 第一次 所有教程都从在 AzureDevops 上创建一个新项目开始 然后克隆到 Visual Studio 谁能告诉我如何将现有项目推送到服
  • Apache Shiro EhCache初始化异常:同一VM中已存在另一个未命名的CacheManager

    我正在尝试将 EhCache 配置为处理启用 Apache Shiro 的 Web 服务中的授权缓存 目前我收到以下异常 org apache shiro cache CacheException net sf ehcache CacheE