Question

With reference to the question : : EJB weblogic.ejb20.cache.CacheFullException

I am trying to understand how the EJB container manages entity beans, I know that create/finder method calls on the EJBHome object results in Bean instances getting loaded up in the cache but is there any other operation/configuration that leads to beans being loaded in the cache (Eg: Container managed Relationships)?

I also see a very high value of Cache Access Count (millions) in the weblogic console. How do I trace these values back to the code?

I have max-beans-in-cache set to 8000.

Was it helpful?

Solution

This link explains it a bit but I you might already know this http://docs.oracle.com/cd/E11035_01/wls100/perform/EJBTuning.html#wp1143320

The thing to note is that each entity bean maps to one record in the database and hence with a max-beans-in-cache of 8000 you're effectlively going to store a max of 8000 different records. Depending on the concurrency strategy you choose, you could even have less than 8000 uniques records, since the cache is allowed to store multiple ejb instances with the same primary keys.

From a code point of view, I think the call to ejbActivate() will either use an existing bean from the cache or put a bean from the pool into the cache. So you could try some logging methods in the ejbactivate to count how many times it gets accessed. I'm not sure about this though.

If your Cache Access Count is in millions, but what about the Cache Hit and Miss counts? Are the Cache Hits successful enough with 8000 as the Cache value.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top