如何在Web应用程序中使用EHCache配置文件

时间:2013-04-02 02:35:10

标签: java caching grails ehcache

每当我运行应用程序时,第一次将cacheMgr.cacheExists(“myCache1”)返回为true,但在重新启动服务器后,它将返回false。我无法理解这个问题。

EHCacheUtilty.java

private static Ehcache getCache(String cacheName) throws Exception{

        if(cacheMgr == null){
            try{
            cacheMgr = CacheManager.create(new URL("http://10.10.1.133:8080/ProjectName/xml/ehcache12.xml"));
            System.out.println("cacheMgr"+cacheMgr);
                System.out.println(cacheMgr.cacheExists("myCache1"));
                System.out.println(Arrays.asList(cacheMgr.getCacheNames()));
            }
            catch(Exception e){
                e.printStackTrace();
            }
        }

        Ehcache cache = null;
        if(cacheMgr!=null){
                //cache = cacheMgr.addCacheIfAbsent(name);
                cache = cacheMgr.getEhcache(cacheName);
        }

        return cache;
}

ehcache.xml中

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.sf.net/ehcache.xsd">

<diskStore path="G:\EHCacheTempMemory" />

<defaultCache maxElementsInMemory="10000" eternal="false"
overflowToDisk="true" timeToIdleSeconds="10" timeToLiveSeconds="20" diskPersistent="true" />

<cache name="myCache1"
maxElementsInMemory="500000"
maxElementsOnDisk="500000"
eternal="false"
overflowToDisk="true"
timeToIdleSeconds="864000"
timeToLiveSeconds="8640000"
diskPersistent="true"
diskSpoolBufferSizeMB="20"
diskExpiryThreadIntervalSeconds="8640000"
memoryStoreEvictionPolicy="LFU" />



</ehcache> 

请帮帮我

1 个答案:

答案 0 :(得分:0)

每次重新启动服务器时,都需要重新运行此程序(或至少部分初始化EhCache的程序)。重新启动服务器会删除您拥有的实例。