Ehcache 总是 returns null

Ehcache always returns null

我正在使用 Ehcache 2.6.8 作为 Spring 启动应用程序的一部分作为 Hibernate 4.3.11 的二级缓存。我有一个允许我检查缓存内容的 JMX MBean (here if you are interested)。

首先,我使用 CacheManager 名称获取缓存列表。那很好用。我可以 return 缓存 cacheManager.getEhcache(cacheName)。然后我调用 cache.getKeys()。这工作正常,cacheName 是 "com.myapp.DomainObjectName" 并且键被列为 "com.myapp.DomainObjectName#1"、"com.myapp.DomainObjectName#2" 等

但随后我尝试通过调用 cache.get("com.myapp.DomainObjectName#1") 来访问其中一个对象,使用缓存本身告诉我存在的其中一个键。然而,结果总是空的。

这是为什么?为什么我找不到与缓存本身刚才说存在的键关联的对象?

PS,可能不相关,但我正在使用 JGroups 在生产中分发缓存。但是,即使在我的笔记本电脑上,我也看到了相同的行为。

您可以找到密钥这一事实表明您的缓存中有内容。

通过阅读您的问题,您错误地将键解释为 String我相信。 JMX 向您显示的是密钥的 toString(),因此使用 String 作为密钥 returns 您什么都没有。

您需要一种方法来直接使用 get(key) 中的对象。