问题标签 [ehcache-3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1831 浏览

java - 如何在 Ehcache 中存储嵌套的 Map 结构?

我想将 Map < Integer, Map < String, Map < String, Integer >>> 类型的变量存储到 Ehcache 中。如何将这个嵌套的 Map 结构作为值存储在 Ehcache 中?

0 投票
1 回答
645 浏览

caching - 如何确保在将数据写入缓存时没有人从 Ehcache 对象中读取?

我想使用EhCache将数据存储到缓存中,但是如果我尝试在数据被填充到缓存之前访问数据,我会得到NULL POINTER exception。我如何确保数据不会从缓存中读取,除非数据已存储到缓存中?

0 投票
1 回答
108 浏览

ehcache - 如何将环境配置文件与 ehcache 一起用于 mybatis?

我们可以在 classpath:ehcache.xml 中配置 ehcache

但我有不同的环境配置文件,例如“test”、“prod”

如何使用profile为mybatis配置不同环境的ehcache?

0 投票
1 回答
973 浏览

java - EhCache 磁盘持久化 - 持久化任意对象

我想使用 EhCache 将对象持久保存在磁盘上,因此下次我将运行我的应用程序时,它将从中加载。在他们的文档中,有以下示例使用 PersistentCacheManager 类来执行此操作:

该示例工作正常,但如果 CacheConfigurationBuilder 对象定义硬编码为 Long 和 String 的键和值的类,对我来说是个问题。我想保留仲裁类的实例,而不是预定义哪些实例。此外,例如,CacheConfigurationBuilder 不会采用 Object.class 或 HashMap.class。

如何使用 EhCache 将任意实例类持久保存在磁盘上?

0 投票
2 回答
1174 浏览

java - 如何在 EhCache 中同步多个线程的动作?

如何同步多个线程的动作并确保在给定时间点只有一个线程可以访问资源EhCache

0 投票
1 回答
1124 浏览

ehcache - Ehcache 3.x 配置键/值类型错误

我将 SpringFramwork 与 Ehcache 3.x 集成,并在ehcache.xml中指定键/值类型时出现异常。这是我的配置:

我得到异常:缓存 [XXX] 指定键/值类型。使用 getCache(String, Class, Class)。这是堆栈跟踪:

我的配置有问题吗?

0 投票
1 回答
123 浏览

java - Ehcache 3 的 web.xml 在哪里?

我正在尝试实现基本的网页缓存,但无法找到带有解释的资源。我一直在寻找没有解释的代码或没有代码的解释(在文档中)。谁能提供一个简单的教程?据我所知,步骤如下:

  1. 实现监听器 4.1 方向(找不到 3.0 版本)

    1. 添加ehcache.xml(自己写了一个简单的)

    2. 添加到 web.xml 的路径 - 这是2.7 版本(找不到 3.0 版本)

有谁知道在哪里可以找到 ehcache 3.0 实现的正确文件?

0 投票
1 回答
326 浏览

caching - Ehcache 3 简单网页缓存的过滤器在哪里调用缓存?

我正在尝试在 Ehcache 中缓存一个简单的网页。感谢另一篇 SO 帖子的帮助,我发现我需要基于 Ehcache 2 代码实现自己的过滤器。当我看过滤器时,我不明白。它在哪里调用缓存来返回值?这是我的实现(很可能是错误的):

0 投票
0 回答
427 浏览

grails - ehcache 留下数百个“打开文件”崩溃 tomcat

首先,如果我在这里使用了错误的术语,我深表歉意,我不是特别熟悉缓存或 Linux 文件系统的内部工作原理。就此而言,我可能误解了这个问题并找错了树。

目前正在运行 grails 3.2.10

这似乎在幕后使用了 ehcache 3.1.4。我们遇到了一个问题,即我们的基于磁盘的缓存在启动时被加载,留下太多“打开的文件”。由于我们的应用程序为 .jars 保留了 4000 多个打开文件,用于读取缓存的 900 多个打开文件导致我们的服务器报告“打开的文件过多”并且服务器变得不可用。我们增加了可用的打开文件,但看起来我们不应该为缓存打开这么多文件。

示例缓存配置:

运行我的应用程序时,如果我使用 来检查打开的文件lsof -p <pid>,我会看到以下文件分别打开了 34 次,并且在应用程序加载后保持打开状态:

这种模式对每个基于磁盘的缓存重复。这在本地运行和将 .wars 部署到 Tomcat 服务器时是相同的。我已经尝试跟踪 ehcache 代码以找到打开这些代码的位置,但到目前为止没有成功,ehcache 非常狡猾。

有谁知道为什么这些基于磁盘的缓存被打开这么多次(而不是关闭)?有没有办法配置它,以便缓存以不同的方式“加热”?

编辑,更多信息:

所以我终于弄清楚发生了什么,虽然还没有解决它。ehcache 正在为磁盘缓存使用 terracotta 实现(我不确定这是默认实现,还是唯一包含的实现),它专注于性能。对于基于磁盘的缓存,默认并发被硬编码为16,这意味着它对每个磁盘缓存打开 16 个读取和 16 个写入FileChannel(然后由于某种原因还有另外两个打开的文件句柄,但此时并不那么重要)。无论是梳理代码还是从文档中,我都没有找到配置它的方法。

0 投票
1 回答
578 浏览

ehcache - 在 Ehcache 3 的导入中找不到 ListenerObject?

我正在尝试使用下面的代码为 Ehcache 3.3.1 项目实现监听器。任何人都可以为 ListenerObject 提出解决方案吗?我似乎在任何地方都找不到它,除了在文档页面上我得到了代码