具有大量实体的Ehcache/Hibernate和RMI复制

Lio*_*ati 8 java replication hibernate ehcache

我正在研究如何在ehcache中使用RMI分发选项.我已正确配置ehcache.xml,复制似乎工作正常.但是我有两个问题:

- >似乎ehcache/hibernate为每个实体创建了1个缓存.这很好,但是当复制到位时,它会创建1个线程/缓存进行复制.这是预期的行为吗?由于我们的域很大,它创建了大约300个线程,这在我看来真的很大

- >另一个令人讨厌的后果是,heartbeat messagre似乎聚合了所有这些缓存名称.从我看到的消息应该适合1500字节,它没有,这导致我的日志中的此消息:Heartbeat不起作用.配置较少的缓存以进行复制.大小为1747但不应大于1500.关于如何改变它的任何想法?

非常感谢你的帮助

小智 3

我们已经有了一个 hack,我们有自己的 hibernate EhCacheProvider 的自定义副本,它重写 buildCache() 以创建我们自己的具有缩短名称(名称的哈希值)的 Cache 对象。这接近 1500 的限制。我们保留原始名称的哈希映射以及用于反向查找的哈希名称。

我们不久前就这样做了,并且一直在生产中使用它。

我们还研究了您的另一个问题,即只有一个复制器线程。首先,我们复制 RMICacheReplicatorFactory 并更改 createCacheEventListener() 以返回 RMIAsynchronousCacheReplicator 的副本,我们通过将replicationThread 字段设置为静态来修改该副本,然后对此进行必要的修复。我们没有抽出时间彻底测试它或将其投入生产,但正在再次查看它,这就是我找到这篇文章的方式:)