系统时间一长,就会报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缓存没有配置好
个人没有遇到过此类问题,但是建议按照如下顺序解决。请注意,*我这里使用的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);}}
好歹你把各组件的版本信息贴一下噻,ehcach,spring都什么版本?
参考一下这个,https://stackoverflow.com/questions/28167845/spring-ehcache-no-such-method-error
这个应该还是和spring或是ehcache的版本相关
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。