0

参考问题:: EJB weblogic.ejb20.cache.CacheFullException

我试图了解 EJB 容器如何管理实体 bean,我知道对 EJBHome 对象的 create/finder 方法调用会导致 Bean 实例加载到缓存中,但是是否有任何其他操作/配置导致加载 bean缓存(例如:容器管理的关系)?

我还在 weblogic 控制台中看到了非常高的缓存访问计数(百万)值。如何将这些值追溯到代码?

我将 max-beans-in-cache 设置为 8000。

4

1 回答 1

1

这个链接解释了一点,但我可能已经知道这个http://docs.oracle.com/cd/E11035_01/wls100/perform/EJBTuning.html#wp1143320

需要注意的是,每个实体 bean 都映射到数据库中的一条记录,因此使用 8000 的 max-beans-in-cache 可以有效地存储最多 8000 条不同的记录。根据您选择的并发策略,您甚至可以拥有少于 8000 个唯一记录,因为允许缓存存储具有相同主键的多个 ejb 实例。

从代码的角度来看,我认为对 ejbActivate() 的调用将使用缓存中的现有 bean 或将池中的 bean 放入缓存中。因此,您可以在 ejbactivate 中尝试一些日志记录方法来计算它被访问的次数。不过我不确定。

如果您的缓存访问计数以百万计,但是缓存命中和未命中计数呢?使用 8000 作为 Cache 值,Cache Hits 是否足够成功。

于 2013-01-04T06:14:23.443 回答