[转载]Ehcache配置

环境搭建
将ehcache-2.1.0-distribution.tar.gz解压
需要将它们放置到WEB-INF/lib 下。
有一个重要的配置文件ehcache.xml,可以从ehcache 组件包中拷贝一个,也可以自
己建立一个。需要放到classpath 下。常放的路径为/WEB-INF/classes/ehcache.xml

ehcache.xml

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="ehcache.xsd">
    <cacheManagerPeerProviderFactory
        class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
        properties="peerDiscovery=manual,
        rmiUrls=//127.0.0.1:57651/paramCache" />

    <cacheManagerPeerListenerFactory
        class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
        properties="hostName=127.0.0.1,port=57651,socketTimeoutMillis=120000" />

    
    <defaultCache maxElementsInMemory="10000" eternal="true"
        timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true"
        diskSpoolBufferSizeMB="30" maxElementsOnDisk="10000000"
        diskPersistent="false" diskExpiryThreadIntervalSeconds="120"
        memoryStoreEvictionPolicy="LRU">
        <cacheEventListenerFactory
            class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
    </defaultCache>

    <cache name="paramCache" maxElementsInMemory="10000" eternal="true"
        timeToIdleSeconds="100000" timeToLiveSeconds="100000"
        overflowToDisk="true">
        <cacheEventListenerFactory
            class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
    </cache>
</ehcache>

应用类

package com.erayt.subfunds.cache;

import java.io.Serializable;

import org.apache.log4j.Logger;

import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;

public class GlobalCache {
    private Logger logger = Logger.getLogger(GlobalCache.class);
    private CacheManager cacheManager ;
    private static Cache paramCache = null;
    public GlobalCache(){
        init();
    }
    
    public void init(){
        
        if(cacheManager == null){
            logger.info("初始化CacheManager");
            cacheManager = CacheManager.create(this.getClass().getClassLoader().getResource("ehcache.xml"));
        }
        
        if(paramCache == null){
            paramCache = cacheManager.getCache("paramCache");
        }
    }
    
    public void putParam(String key, Serializable obj) {
        paramCache.put(new Element(key, obj));
    }

    public void putParam(String key, Serializable obj, int liveTime) {
        paramCache.put(new Element(key, obj, false, liveTime, liveTime));
    }

    public Object getParam(String key) {
        Element ele = paramCache.get(key);
        return ele == null ? null : ele.getObjectValue();
    }

    public boolean removeParam(String key) {
        return paramCache.remove(key);
    }
    
    public void shutdown() {
        try{
            if(paramCache!=null){
                paramCache.dispose();
            }
        }catch(Exception e){
            e.printStackTrace();
        }
        
        if(cacheManager!=null){
            cacheManager.shutdown();
        }
    }
    
    public void destroy() {
        shutdown();
    }
    

}
原文地址:https://www.cnblogs.com/johnason/p/2595688.html