开发者社区> 问答> 正文

Java缓存问题 Ehcache 报错,时间一长就报异常,读数据库是映射的数据库?报错

系统时间一长,就会报Ehcache 异常
报错位置,query这个地方
List articles = this.articleService.query(
"select obj from Article obj order by obj.addTime desc", null,
0, 6);

第2级报错位置 query
public List query(String query, Map params, int begin, int max)
{
return this.articleDao.query(query, params, begin, max);
}
Eheache配置
<?xml version="1.0" encoding="UTF-8"?>


timeToIdleSeconds="1200" timeToLiveSeconds="1200"
overflowToDisk="true" clearOnFlush="true"
memoryStoreEvictionPolicy="LFU">

maxElementsOnDisk="10" eternal="false" overflowToDisk="true"
diskSpoolBufferSizeMB="20" timeToIdleSeconds="120"
timeToLiveSeconds="120" memoryStoreEvictionPolicy="LFU" />
<!-- 单独对某个entity的缓存策略设置-->
maxElementsInMemory="100" eternal="false" timeToIdleSeconds="1200"
timeToLiveSeconds="1200" overflowToDisk="true" clearOnFlush="true">


再描述下报错,就是查询访问数据库的时候,是用配置好的框架,直接映射访问数据库。
然后读好的数据加载到缓存里面应该是,时间一长Ehcache就报错了。
也就是说时间一长就不映射数据库了,或者读缓存没读出来,这个是什么原因呢。

高手麻烦看下啊,我可能描述没那么清晰
用的 JpaDaoSupport query.setHint("org.hibernate.cacheable", Boolean.valueOf(true));
具体相关程序请看下面报错图片啊,初步怀疑是映射表到缓存时间一到,缓存成null了,是不是Eheache缓存没有配置好

图片说明
图片说明
图片说明
图片说明

展开
收起
爱吃鱼的程序员 2020-06-23 00:37:00 1068 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    个人没有遇到过此类问题,但是建议按照如下顺序解决。请注意,*我这里使用的Ehcache版本是2.10.4*.

    • 根据异常栈调用信息查看源码,这个很容易定位。
    • 这里看到的代码如下:
    publicfinalObjectget(Objectkey)throwsCacheException{try{LOG.debug("key:{}",key);if(key==null){returnnull;}else{Elementelement=cache.get(key);if(element==null){LOG.debug("Elementforkey{}isnull",key);returnnull;}else{returnelement.getObjectValue();}}}catch(net.sf.ehcache.CacheExceptione){thrownewCacheException(e);}}
    • 分析源码,我们可以得出结论:
      1. 我们可以打开debug级别日志查看相关信息
      2. 异常栈的信息应该是这个方法本身的thrownewCacheException(e);这句报错了,没有此构造方法
    • 根据以上结论,可以从日志的输出验证是什么情况下会出现此异常,使用相应方法规避。
    • 或者,查看CacheException这个类,确认下为什么没有构造方法,是不是有多个版本的jar包或者其他问题。

    好歹你把各组件的版本信息贴一下噻,ehcach,spring都什么版本?

    参考一下这个,https://stackoverflow.com/questions/28167845/spring-ehcache-no-such-method-error

    这个应该还是和spring或是ehcache的版本相关

    2020-06-23 00:37:18
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
基于英特尔 SSD 的虚拟机缓存解决SSD 立即下载
用户态高速块缓存方案 立即下载
高性能Web架构之缓存体系 立即下载