【问题标题】:Ehcache - Distributed RMI not workingEhcache - 分布式 RMI 不工作
【发布时间】:2010-03-03 13:30:51
【问题描述】:
我在 ehcache 2.0 中遇到了一个奇怪的问题,希望有人能帮助我。我已经建立了一个由两台主机 A 和 B 组成的集群。我可以看到两端都收到了心跳,所以我很确定网络和多播工作正常。问题是我将一个元素放入主机 A 的缓存中,我可以在主机 B 的日志中看到它接收到远程放置。但是当我从主机 B 请求相同的元素时,它会运行到数据库并执行查询。这可能是什么原因?感谢任何指点!
【问题讨论】:
标签:
hibernate
distributed
rmi
ehcache
multicast
【解决方案1】:
您是否使用 Hibernate 和 Ehcache 作为二级缓存?还是只是数据库上方的缓存?
【解决方案2】:
根据您的描述,您在 RMI 模式下运行 ehcache,并带有多播自动对等发现。听起来缓存事件通知也在起作用。这是我的猜测:
根据您的配置中的过期设置,当您从主机 B“获取”时,该元素可能已过期。
在文档中,http://ehcache.org/documentation/storage_options.html,
在内存使用、假脱机和过期策略下:
当元素上存在 get 或 getQuiet 时,会检查它是否过期。如果过期,则将其删除并返回 null。
您可以查看您的配置文件,检查永恒、timeToIdleSeconds 和 timeToLiveSeconds 的值。
<cache name="sampleDistributedCache2"
maxElementsInMemory="10"
eternal="false"
timeToIdleSeconds="100"
timeToLiveSeconds="100"
overflowToDisk="false"></cache>