当前位置: 首页 > 面试题库 >

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

殳毅
2023-03-14
问题内容

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

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

->另一个令人讨厌的结果是,心跳消息似乎聚集了所有这些缓存名称。从我看到的消息来看,该消息应适合1500个字节,但不能容纳1500个字节,这会在日志中显示以下消息:心跳不正常。配置更少的缓存进行复制。大小为1747,但不应大于1500。有什么想法可以改变吗?

非常感谢你的帮助


问题答案:

我们已经有一个黑客,我们拥有自己的hibernateEhCacheProvider的自定义副本,该副本将覆盖buildCache()来创建我们自己的具有缩短名称(名称的哈希)的Cache对象。这大约是1500的限制。我们保留原始名称的哈希图和哈希名称以供反向查找。

我们前一段时间做过,并且一直在生产中使用它。

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



 类似资料:
  • 在我的hibernate映射中,我将缓存使用作为只读 在ehcache.xml中,默认缓存设置为 当我的对象获取默认缓存时,它会运行到事务回滚问题中。 如果我为我引用的对象显式添加缓存,我不会遇到任何问题。 我们有很多DTO在应用程序中使用默认缓存。我必须在ehcache.xml中为每个对象定义缓存吗?在hibernate手册中找不到任何相关文档 http://docs.jboss.org/hib

  • 我使用的是“1.7.0_79”版本。获取以下异常 数据\成员\密钥失败:java。例外:太阳。反映无法将GeneratedSerializationConstructorAccessor1强制转换为sun。反映sun上的SerializationConstructorAccessorImpl。反映MethodAccessorGenerator。generateSerializationConstr

  • 我已将Hibernate缓存从EHCache切换到Infinispan,现在在修改具有复合主键的实体时遇到异常。实体如下: 嵌入式Id类如下: 这两个类都有合理的方法。 只有当集群中有多个服务器时,才会发生异常。异常出现在正在更新的服务器上。堆栈跟踪如下: 以前有人见过这个错误吗?infinispan似乎没有正确序列化嵌入的id类。 我使用的是Hibernate 4.3.5和Infinispan

  • 我需要定义一个类和大量实例(超过30个,但代码中给出了其中的3个),以便能够在python模块文件之间共享它们。我对以下代码有问题(简化): 它给出了错误: 我试图在类中定义实例,以避免为它们定义实例并使代码变长。 通过一个类定义30多个实例的pythonic方法是什么?定义类中的实例的解决方案是什么? file1.txt的内容:

  • 我有一个实体,它的复合主键由两个字段组成,其中一个也是复合外键的一部分。 背景:我有实体<代码>人员 、<代码>区域 和<代码>会话 。 与具有多对多关系,使用称为“和实体。 所以,我有,主键为(,)。本身是的外键。 也有一个字段。我希望(,)是的复合外键。 我的PersonSession代码: } 这看起来不错,它在数据库中创建了所有正确的关系。当我尝试插入个性化会话对象时,问题就出现了——ar

  • 我在读下面的文章: 然而,student实体是用mappedBy注释的,我知道任何用mappedBy注释的实体都是相反的一面。谁能解释一下这个吗? 2-哪个ID是外键?@PrimaryKeyJoinColumn在Address实体中使用,这意味着地址Id是主键和外键吗?在下面的文章中,它们有相同的示例,但它是单向的: http://websystique.com/hibernate/hiberna