我将Ehcache 2.6.8作为Spring Boot应用程序的一部分用作Hibernate 4.3.11的二级缓存 . 我有一个JMX MBean,允许我检查缓存的内容(here if you are interested) .
首先,我使用CacheManager名称来获取缓存列表 . 这很好 . 我可以使用 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在 生产环境 中分发缓存 . 但是,即使在我的笔记本电脑上,我也会看到相同的行
1 回答
您可以找到密钥的事实表明缓存中有内容 .
从阅读你的问题,你错误地把钥匙解释为
String
我相信 . JMX向您显示的是密钥的toString()
,因此使用String
作为密钥不会返回任何内容 .您需要一种方法直接使用
get(key)
中的对象 .