ehcache 缓存管理工具

ehcache 

ehcache.xml

  1. <ehcache> 
  2.  <diskStore path="java.io.tmpdir" /> 
  3.  <defaultCache maxElementsInMemory="10000" eternal="false" 
  4.   timeToIdleSeconds="1800" timeToLiveSeconds="1800" 
  5.   overflowToDisk="false" /> 
  6.  <cache name="shortcache" maxElementsInMemory="10000" eternal="false" 
  7.   overflowToDisk="false" timeToIdleSeconds="600" 
  8.   timeToLiveSeconds="600" /> 
  9.  <cache name="middlecache" maxElementsInMemory="50000" 
  10.   eternal="false" overflowToDisk="false" timeToIdleSeconds="1800" 
  11.   timeToLiveSeconds="1800" /> 
  12.  <cache name="longcache" maxElementsInMemory="10000" eternal="false" 
  13.   overflowToDisk="false" timeToIdleSeconds="3600" 
  14.   timeToLiveSeconds="3600" /> 
  15.  <cache name="morelongcache" maxElementsInMemory="50000" 
  16.   eternal="false" overflowToDisk="false" timeToIdleSeconds="864000" 
  17.   timeToLiveSeconds="864000" /> 
  18. </ehcache> 




web.xml 配置监听 

  1. <listener> 
  2.   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
  3.  </listener> 
  4.     <listener> 
  5.         <listener-class>com.dadi.oa.init.InitListener</listener-class> 
  6.   </listener>




InitListener 类  监听初始化类

  1. package com.dadi.oa.init; 
  2. import java.util.ArrayList; 
  3. import java.util.List; 
  4. import javax.servlet.ServletContextEvent; 
  5. import javax.servlet.ServletContextListener; 
  6. public class InitListener implements ServletContextListener { 
  7.  private static List<InitHandler> initHandlerList=new ArrayList<InitHandler>(); 
  8.  static { 
  9.   initHandlerList.add(new InitEhcacheHandler()); 
  10.  } 
  11.   
  12.  public void contextDestroyed(ServletContextEvent arg0) { 
  13.   // TODO Auto-generated method stub 
  14.    
  15.  } 
  16.  public void contextInitialized(ServletContextEvent servletContextEvent) { 
  17.   if (initHandlerList != null && initHandlerList.size() > 0) { 
  18.    for (InitHandler initHandler : initHandlerList) { 
  19.     try { 
  20.      initHandler.init(servletContextEvent.getServletContext()); 
  21.     } catch (RuntimeException e) { 
  22.       
  23.      e.printStackTrace(); 
  24.     } 
  25.    } 
  26.   } 
  27.    
  28.  } 
  29. } 


InitHandler 接口 初始化接口

  1. package com.dadi.oa.init; 
  2. import javax.servlet.ServletContext; 
  3. public interface InitHandler { 
  4.  public void init(ServletContext servletContext); 
  5. } 


InitEhcacheHandler 类    ehcache初始化类实现初始化接口

  1. package com.dadi.oa.init; 
  2. import java.io.File; 
  3. import javax.servlet.ServletContext; 
  4. import com.dadi.oa.util.CacheFactory; 
  5. import net.sf.ehcache.CacheManager; 
  6. public class InitEhcacheHandler implements InitHandler { 
  7.  public void init(ServletContext servletContext) { 
  8.   String realpath = servletContext.getRealPath("/WEB-INF/ehcache.xml").replace('/',File.separatorChar); 
  9.   CacheManager cacheManager = new CacheManager(realpath); 
  10.   CacheFactory.setCacheManager(cacheManager); 
  11.  } 
  12. } 




CacheFactory  类   获取各类缓存  

  1. package com.dadi.oa.util; 
  2. import net.sf.ehcache.Cache; 
  3. import net.sf.ehcache.CacheManager; 
  4. import org.apache.commons.lang.StringUtils; 
  5. public class CacheFactory { 
  6.  private  static CacheManager cacheManager ; 
  7.   
  8.  public static Cache getCacheByName(String cachename) { 
  9.   if (StringUtils.isEmpty(cachename)) { 
  10.    System.out.println("cachename must be not empty"); 
  11.    return null; 
  12.   } 
  13.   Cache cache = cacheManager.getCache(cachename); 
  14.   if (cache == null) { 
  15.    System.out.println("no cache named : " + cachename + "has defined. "); 
  16.    return null; 
  17.   } 
  18.   return cache; 
  19.  } 
  20.     /** 
  21.      *<pre><cache name="cachekey" maxElementsInMemory="50000" 
  22.      eternal="false" overflowToDisk="false" timeToIdleSeconds="864000" 
  23.      timeToLiveSeconds="864000" /></pre> 
  24.      功能:获取cache,不存在时,自动创建,options为可选配置参数 
  25.      * @param options [memory,liveSeconds, idleSeconds] 
  26.      * @param cacheName 
  27.      * @return 
  28.      */ 
  29.     public static Cache getCache(String cacheName,int...options) { 
  30.         int memory=10000, liveSeconds=864000, idleSeconds=864000;//shortcache 
  31.         if (options!=null&&options.length>0) { 
  32.             memory = options[0]; 
  33.             liveSeconds=options.length>1?options[1]:liveSeconds; 
  34.             idleSeconds=options.length>2?options[1]:idleSeconds; 
  35.         } 
  36.         Cache cache = getCacheByName(cacheName); 
  37.         if(cache==null){ 
  38.             cache = new Cache(cacheName, memory, false, false, liveSeconds, idleSeconds); 
  39.             cacheManager.addCache(cache); 
  40.             System.out.println("the cache " + cacheName + " has created dynamically. "); 
  41.         } 
  42.         return cache; 
  43.     } 
  44.  public synchronized static void setCacheManager(CacheManager cacheManager) { 
  45.   CacheFactory.cacheManager = cacheManager; 
  46.  } 
  47. } 



使用ehcahe

 
  1. /** 
  2.    * 获取公文证明列表 
  3.    * @param mapping 
  4.    * @param form 
  5.    * @param request 
  6.    * @param response 
  7.    * @return 
  8.    * @throws Exception 
  9.    */ 
  10.   public ActionForward provelist(ActionMapping mapping, ActionForm form, 
  11.           HttpServletRequest request, HttpServletResponse response) 
  12.           throws Exception { 
  13.    String msgid = RequestUtil.getRequestInfo(request, "msgid"); 
  14.    String resultList_en_ = RequestUtil.getRequestInfo(request, "resultList_en_"); 
  15.    CommonListVo commonListVo = CacheFactory.getCache("shortcache").get("commonListVo"+msgid) == null  
  16.      ? null : 
  17. //获取缓存
  18. (CommonListVo)BeanUtils.cloneBean(CacheFactory.getCache("shortcache").get("commonListVo"+msgid).getObjectValue());   
  19.    if(null !=resultList_en_ && resultList_en_.equalsIgnoreCase("output.xls")){ 
  20.     logger.info("---------------prove list execl export .......-----------"); 
  21.    // modfiedExportData(commonListVo.getDataList()); 
  22.    }else{ 
  23.     logger.info("---------------get prove list begin -----------"); 
  24.     if(null == commonListVo){ 
  25.      Map retMap = oaProveManageService.getUserProveList(msgid); 
  26.      if(retMap.get("resultStr").toString().equalsIgnoreCase("fail")){ 
  27.       request.setAttribute("info", "数据库繁忙,请稍候再试!"); 
  28.       request.setAttribute("closepage", "yes"); 
  29.      } 
  30.      commonListVo = new CommonListVo(); 
  31.      commonListVo.setColumnList((ArrayList)genECColumnsList()); 
  32.      commonListVo.setDataList((ArrayList)retMap.get("provelist")); 
  33.      commonListVo.setExportFlag(true); 
  34.      commonListVo.setActionTo("/oaproverpt.do"); 
  35.      commonListVo.setPagesize(100); 
  36. //设置缓存
  37.      CacheFactory.getCacheByName("shortcache").put(new Element("commonListVo"+msgid, BeanUtils.cloneBean(commonListVo))); 
  38.     } 
  39.     commonListVo.setDataList((ArrayList)genECDataList((List)commonListVo.getDataList(),request.getServerName())); 
  40.     
  41.     logger.info("---------------get prove list end -----------"); 
  42.    } 
  43.    request.setAttribute("commonListVo", commonListVo); 
  44.    return mapping.findForward("success"); 
  45.   }


ehcache jar:


ehcache-1.2.3.jar

附件列表

    原文地址:https://www.cnblogs.com/signheart/p/6595586.html