我使用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在生产中分发缓存。但是,即使在我的笔记本电脑上,我也会看到相同的行为。
答案 0 :(得分:0)
您可以找到密钥表明缓存中有内容。
通过阅读你的问题,你错误地将密钥解释为我相信String
。 JMX向您显示的是密钥的toString()
,因此使用String
作为密钥不会返回任何内容。
您需要一种方法直接使用get(key)
中的对象。