zoukankan      html  css  js  c++  java
  • 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

    附件列表

    • 相关阅读:
      通知
      KVO详解
      KVC详解
      KVC/KVO总结
      结构体Struct
      检测文件(夹)大小
      NSFileHandle&&NSFileManage
      ***NSFileManager
      获取文件扩展名
      MySql数据库_03
    • 原文地址:https://www.cnblogs.com/signheart/p/6595586.html
    Copyright © 2011-2022 走看看