ehcache缓存失效问题

jobell 发布于 2011/06/29 11:18
阅读 3K+
收藏 0

我在用ehcache做缓存的过程中,这几天发现系统总是抛出异常。

感觉很是奇怪,今天查了一下日志。发现是缓存的问题。

我的代码是这样写的。

public static WebSite getInfo(long id) throws Exception{

CacheConstants constants = new CacheConstants();

CacheStruct cs_base_info=constants.getCs_base_info();

Web web=(Web) CacheManager.get(cs_base_info);

if(web==null){

web= WebDAO.findWebById(id);

cs_site_base_info.setData(web);

cs_site_base_info.setExpire_time(600);//10分钟

CacheManager.set(cs_site_base_info);

}

return web;

}

然后下面在从web中取出数据,可以这个时候出了异常,说web为空指针,

也就是说在判断的时候还没有失效。使用的时候失效了。这个问题该怎么解决呢??

加载中
0
TonyDQ
TonyDQ
是不是WebDAO.findWebById(id)返回的也是null?
0
jobell
jobell

不是的。这是从数据库中查出来的。

现在是失效以后出现了null,然后在刷新重新设置缓存就ok了。
所以问题还是出在了缓存判断的时候还没有失效。使用的时候失效了的问题上。

0
jobell
jobell
现在缓存返回来的是一个对象指针,也就是对象在缓存中的指针,如果返回来的是一个对象的克隆,应该就没有这些问题了。
爱琴海的阳光
爱琴海的阳光
回复 @红薯 : 请问这个问题怎么解决呢?
北柯一梦
北柯一梦
回复 @红薯 : 怎么处理?求~
jobell
jobell
@红薯: 哦哦。不知道你是怎么做的处理呢?那如果用memcached会不会有这个问题呢??
红薯
红薯
ehcache就是这样的,最好自己处理一下,返回一个克隆对象
0
jobell
jobell
 顶顶,排前面。
返回顶部
顶部