EJB weblogic.ejb20.cache.CacheFullException

痞子三分冷 提交于 2019-12-04 08:25:25

10000 is quite a high value for max-beans-in-cache and from the log it seems the application tried to make a call for up to 85785 instances of the EJB.

I would suggest some refactoring in your code.

Your code is doing

com.nextjet.enterprise.locationcode.locationcode.LocationCode_v2epgs_ELOImpl
.getLocationCodeData()

Is this is mainly a read operation ? Or are you doing simultaneous writes and reads?

You could refactor this in 2 ways to reduce the EJB overheads if it is mainly doing read operations.

1) Read Oracle's recommendation on tuning the EJB settings and database options for concurrency, especially the Read-Mostly pattern

http://docs.oracle.com/cd/E13222_01/wls/docs81/ejb/entity.html#ChoosingaConcurrencyStrategy

2) If you are mainly doing reads - then dont use Entity EJBs at all. Use the FastLaneReader pattern which is using a direct JDBC call to fetch the data for SELECT, and you can do writes using the EJBs as at present. In this way, the max-beans-in-cache can be reduced

A very detailed example is given on the Sun Design Patterns site

http://java.sun.com/blueprints/patterns/FastLaneReader.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!