过滤器里 使用Ehcache 缓存

       经过上次使用Ehcache页面缓存,查看了下SimplePageCachingFilter的源码,SimplePageCachingFilter继承了CachingFilter并实现了几个函数,过滤器的主要函数doFilter()还是父类CachingFilter的,该函数中通过buildPageInfo()函数实现从缓存中读出缓存(如果缓存中没有则通过“chain.doFilter(request, wrapper);”还获得目标页面的页面结果,并将其放入缓存)。      

      如何“在tomcat启动加载web时,就自动缓存上数据库中的某些“公用大数据”,减少对数据库的频繁访问”,Ehcache在jvm重启后虽然可以通过配置diskPersistent实现缓存的重读,看了下文档,好像比较复杂。想过几种方法,最后还是想用过滤器的方式来实现,因为tomcat启动时就初始化了过滤器实例,tomcat的整个生命周期中只有一个过滤器实例,正好符合项目所需要的缓存有效时间。   

     项目代码比较简单,参照了http://oaklet.iteye.com/blog/309037 ,并现学现用地使用了个单例模式。代码完成后部署到 Tomcat7+jdk6上,没有问题,部署到tomcat5+jdk5上,有出现版本错误问题,郁闷!  有上次的经验,应该也是哪个jar包太新的问题。尝试过替换掉tomcat5的 sevlet-api.jar包,不好使;最后发现舍弃最开始用的ehcache-2.8.2-distribution.tar里的ehcache-2.8.2.jar,转而换成之前页面缓存用的ehcache-core-2.5.2.jar,竟然好使了~~~  看了下两个jar包的内容,发现ehcache-2.8.2.jar只是多了terracotta,这个东西好像是解决分布式缓存的东西,估计是这个东西依赖jdk5以上的环境才导致刚才的问题。 之后在把之前的页面缓存做到以个web里,也没出问题。OK


   现在又个小小的担忧:项目以后是要支持集群的,那么是否需要支持分布式缓存?  







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值