EhCache
EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。
声明
来自:Michael's blog @http://sjsky.iteye.com
Demo
单例CacheManager 创建
/**
*
* 单例CacheManager 创建
*/
public static void testCreateSingleton() {
// Create a singleton CacheManager using defaults
System.out.println("Create a singleton CacheManager using defaults");
// CacheManager.create();
System.out.println("CacheManager.create() :="
+ CacheManager.getInstance());
System.out.println("cacheNames length := "
+ CacheManager.getInstance().getCacheNames().length);
CacheManager.getInstance().shutdown();
System.out.println("=======================================");
// Create a singleton CacheManager using a configuration file
System.out
.println("Create a singleton CacheManager using a configuration file");
CacheManager singletonManager2 = CacheManager
.create("src/main/java/michael/hibernate/cache/ehcache/ehcache.xml");
System.out.println("CacheManager.create(file) :=" + singletonManager2);
System.out.println("cacheNames length := "
+ singletonManager2.getCacheNames().length);
System.out
.println("CacheManager.getInstance() == singletonManager2 :: "
+ (CacheManager.getInstance() == singletonManager2));
singletonManager2.shutdown();
// CacheManager.getInstance().shutdown();
System.out.println("=======================================");
// Create a singleton CacheManager from a configuration resource in the
// classpath.
URL configurl = Thread.currentThread().getContextClassLoader()
.getResource("michael/hibernate/cache/ehcache/ehcache.xml");
CacheManager singletonManager3 = CacheManager.create(configurl);
System.out.println("CacheManager.create(url) :=" + singletonManager3);
String[] cacheNames = singletonManager3.getCacheNames();
System.out.println("cacheNames length := " + cacheNames.length);
for (String name : cacheNames) {
System.out.println("name := " + name);
}
singletonManager3.shutdown();
// CacheManager.getInstance().shutdown();
}
运行结果:
Create a singleton CacheManager using defaults
CacheManager.create() :=net.sf.ehcache.CacheManager@e80842
cacheNames length := 4
=======================================
Create a singleton CacheManager using a configuration file
CacheManager.create(file) :=net.sf.ehcache.CacheManager@1bbf1ca
cacheNames length := 6
CacheManager.getInstance() == singletonManager2 :: true
=======================================
CacheManager.create(url) :=net.sf.ehcache.CacheManager@f9c40
cacheNames length := 6
name := sampleRepicatedCache2
name := sampleReplicatedCache1
name := sampleCache2
name := sampleCache1
name := sampleReplicatedCache3
name := sampleCache3
/**
*
* 单例CacheManager 创建
*/
public static void testCreateSingleton() {
// Create a singleton CacheManager using defaults
System.out.println("Create a singleton CacheManager using defaults");
// CacheManager.create();
System.out.println("CacheManager.create() :="
+ CacheManager.getInstance());
System.out.println("cacheNames length := "
+ CacheManager.getInstance().getCacheNames().length);
CacheManager.getInstance().shutdown();
System.out.println("=======================================");
// Create a singleton CacheManager using a configuration file
System.out
.println("Create a singleton CacheManager using a configuration file");
CacheManager singletonManager2 = CacheManager
.create("src/main/java/michael/hibernate/cache/ehcache/ehcache.xml");
System.out.println("CacheManager.create(file) :=" + singletonManager2);
System.out.println("cacheNames length := "
+ singletonManager2.getCacheNames().length);
System.out
.println("CacheManager.getInstance() == singletonManager2 :: "
+ (CacheManager.getInstance() == singletonManager2));
singletonManager2.shutdown();
// CacheManager.getInstance().shutdown();
System.out.println("=======================================");
// Create a singleton CacheManager from a configuration resource in the
// classpath.
URL configurl = Thread.currentThread().getContextClassLoader()
.getResource("michael/hibernate/cache/ehcache/ehcache.xml");
CacheManager singletonManager3 = CacheManager.create(configurl);
System.out.println("CacheManager.create(url) :=" + singletonManager3);
String[] cacheNames = singletonManager3.getCacheNames();
System.out.println("cacheNames length := " + cacheNames.length);
for (String name : cacheNames) {
System.out.println("name := " + name);
}
singletonManager3.shutdown();
// CacheManager.getInstance().shutdown();
}
运行结果:
Create a singleton CacheManager using defaults
CacheManager.create() :=net.sf.ehcache.CacheManager@e80842
cacheNames length := 4
=======================================
Create a singleton CacheManager using a configuration file
CacheManager.create(file) :=net.sf.ehcache.CacheManager@1bbf1ca
cacheNames length := 6
CacheManager.getInstance() == singletonManager2 :: true
=======================================
CacheManager.create(url) :=net.sf.ehcache.CacheManager@f9c40
cacheNames length := 6
name := sampleRepicatedCache2
name := sampleReplicatedCache1
name := sampleCache2
name := sampleCache1
name := sampleReplicatedCache3
name := sampleCache3
多个CacheManager 创建
/**
*
* CacheManager 创建
*/
public static void testCreateManager() {
// Create a CacheManager instance using defaults
CacheManager manager1 = new CacheManager();
System.out.println("new CacheManager() := " + manager1);
String[] cacheNames = manager1.getCacheNames();
System.out.println("cacheNames length := " + cacheNames.length);
for (String name : cacheNames) {
System.out.println("name := " + name);
}
manager1.shutdown();
System.out.println("=======================================");
// Create a CacheManager instance using a configuration file
CacheManager manager2 = new CacheManager(
"src/main/java/michael/hibernate/cache/ehcache/ehcache.xml");
System.out.println("new CacheManager(file) := " + manager2);
System.out.println("cacheNames length := "
+ manager2.getCacheNames().length);
manager2.shutdown();
System.out.println("=======================================");
// Create a singleton CacheManager from a configuration resource in the
// classpath.
URL configurl = Thread.currentThread().getContextClassLoader()
.getResource("michael/hibernate/cache/ehcache/ehcache.xml");
CacheManager manager3 = new CacheManager(configurl);
System.out.println("new CacheManager(url) := " + manager3);
System.out.println("cacheNames length := "
+ manager3.getCacheNames().length);
for (String name : manager3.getCacheNames()) {
System.out.println("name := " + name);
}
manager3.shutdown();
}
运行结果:
new CacheManager() := net.sf.ehcache.CacheManager@17653ae
cacheNames length := 4
name := sampleCache2
name := org.hibernate.cache.UpdateTimestampsCache
name := sampleCache1
name := org.hibernate.cache.StandardQueryCache
=======================================
new CacheManager(file) := net.sf.ehcache.CacheManager@1ff0dde
cacheNames length := 6
=======================================
new CacheManager(url) := net.sf.ehcache.CacheManager@db4fa2
cacheNames length := 6
name := sampleRepicatedCache2
name := sampleReplicatedCache1
name := sampleCache2
name := sampleCache1
name := sampleReplicatedCache3
name := sampleCache3
/**
*
* CacheManager 创建
*/
public static void testCreateManager() {
// Create a CacheManager instance using defaults
CacheManager manager1 = new CacheManager();
System.out.println("new CacheManager() := " + manager1);
String[] cacheNames = manager1.getCacheNames();
System.out.println("cacheNames length := " + cacheNames.length);
for (String name : cacheNames) {
System.out.println("name := " + name);
}
manager1.shutdown();
System.out.println("=======================================");
// Create a CacheManager instance using a configuration file
CacheManager manager2 = new CacheManager(
"src/main/java/michael/hibernate/cache/ehcache/ehcache.xml");
System.out.println("new CacheManager(file) := " + manager2);
System.out.println("cacheNames length := "
+ manager2.getCacheNames().length);
manager2.shutdown();
System.out.println("=======================================");
// Create a singleton CacheManager from a configuration resource in the
// classpath.
URL configurl = Thread.currentThread().getContextClassLoader()
.getResource("michael/hibernate/cache/ehcache/ehcache.xml");
CacheManager manager3 = new CacheManager(configurl);
System.out.println("new CacheManager(url) := " + manager3);
System.out.println("cacheNames length := "
+ manager3.getCacheNames().length);
for (String name : manager3.getCacheNames()) {
System.out.println("name := " + name);
}
manager3.shutdown();
}
运行结果:
new CacheManager() := net.sf.ehcache.CacheManager@17653ae
cacheNames length := 4
name := sampleCache2
name := org.hibernate.cache.UpdateTimestampsCache
name := sampleCache1
name := org.hibernate.cache.StandardQueryCache
=======================================
new CacheManager(file) := net.sf.ehcache.CacheManager@1ff0dde
cacheNames length := 6
=======================================
new CacheManager(url) := net.sf.ehcache.CacheManager@db4fa2
cacheNames length := 6
name := sampleRepicatedCache2
name := sampleReplicatedCache1
name := sampleCache2
name := sampleCache1
name := sampleReplicatedCache3
name := sampleCache3
Cache的多种创建方式
/**
* @blog http://sjsky.iteye.com <br>
* Create Cache
*/
public static void testCreateCache() {
System.out.println("add cache with defaults:");
CacheManager singletonManager = CacheManager.create();
singletonManager.addCache("myCache1");
Cache myCache1 = singletonManager.getCache("myCache1");
System.out.println(myCache1);
System.out.println("add cache with new Cache(arg1,arg2...):");
Cache myMemoryCache = new Cache("myMemoryCache", 5000, false, false, 5,
2);
singletonManager.addCache(myMemoryCache);
System.out.println(singletonManager.getCache("myMemoryCache"));
System.out.println("Create a Cache specifying its configuration:");
// Create a Cache specifying its configuration.
int maxElements = 100;
Cache myConfigCahce = new Cache(new CacheConfiguration("myConifgCahce",
maxElements).memoryStoreEvictionPolicy(
MemoryStoreEvictionPolicy.LFU).overflowToDisk(true).eternal(
false).timeToLiveSeconds(60).timeToIdleSeconds(30)
.diskPersistent(false).diskExpiryThreadIntervalSeconds(0));
singletonManager.addCache(myConfigCahce);
System.out.println(singletonManager.getCache("myConifgCahce"));
singletonManager.shutdown();
}
/**
* @blog http://sjsky.iteye.com <br>
* Create Cache
*/
public static void testCreateCache() {
System.out.println("add cache with defaults:");
CacheManager singletonManager = CacheManager.create();
singletonManager.addCache("myCache1");
Cache myCache1 = singletonManager.getCache("myCache1");
System.out.println(myCache1);
System.out.println("add cache with new Cache(arg1,arg2...):");
Cache myMemoryCache = new Cache("myMemoryCache", 5000, false, false, 5,
2);
singletonManager.addCache(myMemoryCache);
System.out.println(singletonManager.getCache("myMemoryCache"));
System.out.println("Create a Cache specifying its configuration:");
// Create a Cache specifying its configuration.
int maxElements = 100;
Cache myConfigCahce = new Cache(new CacheConfiguration("myConifgCahce",
maxElements).memoryStoreEvictionPolicy(
MemoryStoreEvictionPolicy.LFU).overflowToDisk(true).eternal(
false).timeToLiveSeconds(60).timeToIdleSeconds(30)
.diskPersistent(false).diskExpiryThreadIntervalSeconds(0));
singletonManager.addCache(myConfigCahce);
System.out.println(singletonManager.getCache("myConifgCahce"));
singletonManager.shutdown();
}
运行结果:
add cache with defaults:
[ name = myCache1 status = STATUS_ALIVE eternal = false overflowToDisk = true maxElementsInMemory = 100 maxElementsOnDisk = 100 memoryStoreEvictionPolicy = LRU timeToLiveSeconds = 120 timeToIdleSeconds = 120 diskPersistent = false diskExpiryThreadIntervalSeconds = 120 cacheEventListeners: net.sf.ehcache.statistics.LiveCacheStatisticsWrapper hitCount = 0 memoryStoreHitCount = 0 diskStoreHitCount = 0 missCountNotFound = 0 missCountExpired = 0 overflowToOffHeap = false maxMemoryOffHeap = null ]
add cache with new Cache(arg1,arg2...):
[ name = myMemoryCache status = STATUS_ALIVE eternal = false overflowToDisk = false maxElementsInMemory = 5000 maxElementsOnDisk = 0 memoryStoreEvictionPolicy = LRU timeToLiveSeconds = 5 timeToIdleSeconds = 2 diskPersistent = false diskExpiryThreadIntervalSeconds = 120 cacheEventListeners: net.sf.ehcache.statistics.LiveCacheStatisticsWrapper hitCount = 0 memoryStoreHitCount = 0 diskStoreHitCount = 0 missCountNotFound = 0 missCountExpired = 0 overflowToOffHeap = false maxMemoryOffHeap = null ]
Create a Cache specifying its configuration:
[ name = myConifgCahce status = STATUS_ALIVE eternal = false overflowToDisk = true maxElementsInMemory = 100 maxElementsOnDisk = 0 memoryStoreEvictionPolicy = LFU timeToLiveSeconds = 60 timeToIdleSeconds = 30 diskPersistent = false diskExpiryThreadIntervalSeconds = 120 cacheEventListeners: net.sf.ehcache.statistics.LiveCacheStatisticsWrapper hitCount = 0 memoryStoreHitCount = 0 diskStoreHitCount = 0 missCountNotFound = 0 missCountExpired = 0 overflowToOffHeap = false maxMemoryOffHeap = null ]
对Cache的CRUD的操作
/**
* @blog http://sjsky.iteye.com <br>
* CRUD operations
*/
public static void testCacheElementCRUD() {
CacheManager manager = null;
try {
manager = new CacheManager();
manager.addCache("MichaelInfo");
Cache myCache = manager.getCache("MichaelInfo");
System.out.println("manager.getCache :" + myCache);
Element element = new Element("blog", "http://sjsky.javaeye.com");
myCache.put(element);
System.out.println("cache put Element");
System.out.println("get Element value:= "
+ myCache.get("blog").getValue());
System.out.println("get Element objectvalue:= "
+ myCache.get("blog").getObjectValue());
System.out.println("update the Element");
myCache.put(new Element("blog", "http://sjsky.iteye.com"));
System.out.println("get Element value:= "
+ myCache.get("blog").getValue());
System.out.println("get Element objectvalue:= "
+ myCache.get("blog").getObjectValue());
myCache.put(new Element("array", new String[] { "test", "array" }));
System.out.println("array value:= "
+ myCache.get("array").getValue());
myCache.remove("array");
if (null == myCache.get("array")) {
System.out.println("remove Element 'array' successful.");
}
} catch (Exception e) {
e.printStackTrace(System.out);
} finally {
if (null != manager) {
manager.shutdown();
}
}
}
/**
* @blog http://sjsky.iteye.com <br>
* CRUD operations
*/
public static void testCacheElementCRUD() {
CacheManager manager = null;
try {
manager = new CacheManager();
manager.addCache("MichaelInfo");
Cache myCache = manager.getCache("MichaelInfo");
System.out.println("manager.getCache :" + myCache);
Element element = new Element("blog", "http://sjsky.javaeye.com");
myCache.put(element);
System.out.println("cache put Element");
System.out.println("get Element value:= "
+ myCache.get("blog").getValue());
System.out.println("get Element objectvalue:= "
+ myCache.get("blog").getObjectValue());
System.out.println("update the Element");
myCache.put(new Element("blog", "http://sjsky.iteye.com"));
System.out.println("get Element value:= "
+ myCache.get("blog").getValue());
System.out.println("get Element objectvalue:= "
+ myCache.get("blog").getObjectValue());
myCache.put(new Element("array", new String[] { "test", "array" }));
System.out.println("array value:= "
+ myCache.get("array").getValue());
myCache.remove("array");
if (null == myCache.get("array")) {
System.out.println("remove Element 'array' successful.");
}
} catch (Exception e) {
e.printStackTrace(System.out);
} finally {
if (null != manager) {
manager.shutdown();
}
}
}
运行结果:
manager.getCache :[ name = MichaelInfo status = STATUS_ALIVE eternal = false overflowToDisk = true maxElementsInMemory = 100 maxElementsOnDisk = 100 memoryStoreEvictionPolicy = LRU timeToLiveSeconds = 120 timeToIdleSeconds = 120 diskPersistent = false diskExpiryThreadIntervalSeconds = 120 cacheEventListeners: net.sf.ehcache.statistics.LiveCacheStatisticsWrapper hitCount = 0 memoryStoreHitCount = 0 diskStoreHitCount = 0 missCountNotFound = 0 missCountExpired = 0 overflowToOffHeap = false maxMemoryOffHeap = null ]
cache put Element
get Element value:= http://sjsky.javaeye.com
get Element objectvalue:= http://sjsky.javaeye.com
update the Element
get Element value:= http://sjsky.iteye.com
get Element objectvalue:= http://sjsky.iteye.com
array value:= [Ljava.lang.String;@ec4a87
remove Element 'array' successful.
Cache的统计信息
/**
*
* cache 信息统计
*/
public static void testCacheStatistics() {
CacheManager manager = null;
try {
manager = new CacheManager();
manager.addCache("MichaelInfo");
Cache myCache = manager.getCache("MichaelInfo");
myCache.put(new Element("username", "Michael"));
myCache.put(new Element("sex", "男"));
myCache.put(new Element("date", new Date()));
myCache.put(new Element("height", 172));
myCache.put(new Element("position", "cto"));
myCache.put(new Element("blog", "http://sjsky.iteye.com"));
System.out.println("cache size := " + myCache.getSize());
System.out.println("MemoryStoreSize := "
+ myCache.getMemoryStoreSize());
System.out
.println("DiskStoreSize := " + myCache.getDiskStoreSize());
myCache.getStatistics().getDiskStoreObjectCount();
System.out.println("Caceh getStatistics:");
Statistics statistics = myCache.getStatistics();
System.out.println("CacheHits := " + statistics.getCacheHits());
System.out.println("CacheMisses := " + statistics.getCacheMisses());
System.out.println("InMemoryHits := "
+ statistics.getInMemoryHits());
System.out.println("InMemoryMisses := "
+ statistics.getInMemoryMisses());
System.out.println("OnDiskHits := " + statistics.getOnDiskHits());
System.out.println("OnDiskMisses := "
+ statistics.getOnDiskMisses());
System.out.println("MemoryStoreObjectCount := "
+ statistics.getMemoryStoreObjectCount());
System.out.println("DiskStoreObjectCount := "
+ statistics.getDiskStoreObjectCount());
Element element = myCache.get("username");
System.out.println("Element HitCount := " + element.getHitCount());
} catch (Exception e) {
e.printStackTrace(System.out);
} finally {
if (null != manager) {
manager.shutdown();
}
}
}
运行结果:
cache size := 6
MemoryStoreSize := 6
DiskStoreSize := 0
Caceh getStatistics:
CacheHits := 0
CacheMisses := 0
InMemoryHits := 0
InMemoryMisses := 0
OnDiskHits := 0
OnDiskMisses := 0
MemoryStoreObjectCount := 6
DiskStoreObjectCount := 0
Element HitCount := 1
/**
*
* cache 信息统计
*/
public static void testCacheStatistics() {
CacheManager manager = null;
try {
manager = new CacheManager();
manager.addCache("MichaelInfo");
Cache myCache = manager.getCache("MichaelInfo");
myCache.put(new Element("username", "Michael"));
myCache.put(new Element("sex", "男"));
myCache.put(new Element("date", new Date()));
myCache.put(new Element("height", 172));
myCache.put(new Element("position", "cto"));
myCache.put(new Element("blog", "http://sjsky.iteye.com"));
System.out.println("cache size := " + myCache.getSize());
System.out.println("MemoryStoreSize := "
+ myCache.getMemoryStoreSize());
System.out
.println("DiskStoreSize := " + myCache.getDiskStoreSize());
myCache.getStatistics().getDiskStoreObjectCount();
System.out.println("Caceh getStatistics:");
Statistics statistics = myCache.getStatistics();
System.out.println("CacheHits := " + statistics.getCacheHits());
System.out.println("CacheMisses := " + statistics.getCacheMisses());
System.out.println("InMemoryHits := "
+ statistics.getInMemoryHits());
System.out.println("InMemoryMisses := "
+ statistics.getInMemoryMisses());
System.out.println("OnDiskHits := " + statistics.getOnDiskHits());
System.out.println("OnDiskMisses := "
+ statistics.getOnDiskMisses());
System.out.println("MemoryStoreObjectCount := "
+ statistics.getMemoryStoreObjectCount());
System.out.println("DiskStoreObjectCount := "
+ statistics.getDiskStoreObjectCount());
Element element = myCache.get("username");
System.out.println("Element HitCount := " + element.getHitCount());
} catch (Exception e) {
e.printStackTrace(System.out);
} finally {
if (null != manager) {
manager.shutdown();
}
}
}
运行结果:
cache size := 6
MemoryStoreSize := 6
DiskStoreSize := 0
Caceh getStatistics:
CacheHits := 0
CacheMisses := 0
InMemoryHits := 0
InMemoryMisses := 0
OnDiskHits := 0
OnDiskMisses := 0
MemoryStoreObjectCount := 6
DiskStoreObjectCount := 0
Element HitCount := 1
测试所用两个的ehcache.xml文件
1.classpath 下的: ehcache.xml (默认加载的配置文件)
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd"
updateCheck="true" monitoring="autodetect"
dynamicConfig="true">
<diskStore path="java.io.tmpdir"/>
<transactionManagerLookup class="net.sf.ehcache.transaction.manager.DefaultTransactionManagerLookup"
properties="jndiName=java:/TransactionManager" propertySeparator=";"/>
<cacheManagerEventListenerFactory class="" properties=""/>
<defaultCache
maxElementsInMemory="100"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
diskSpoolBufferSizeMB="30"
maxElementsOnDisk="100"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
statistics="false"
/>
<cache name="org.hibernate.cache.StandardQueryCache"
maxElementsInMemory="5"
eternal="false"
timeToLiveSeconds="120"
overflowToDisk="true" />
<cache name="org.hibernate.cache.UpdateTimestampsCache"
maxElementsInMemory="5000"
eternal="true"
overflowToDisk="true" />
<cache name="sampleCache1"
maxElementsInMemory="10000"
maxElementsOnDisk="1000"
eternal="false"
overflowToDisk="true"
diskSpoolBufferSizeMB="20"
timeToIdleSeconds="300"
timeToLiveSeconds="600"
memoryStoreEvictionPolicy="LFU"
transactionalMode="off"
/>
<cache name="sampleCache2"
maxElementsInMemory="1000"
eternal="true"
overflowToDisk="false"
memoryStoreEvictionPolicy="FIFO"
/>
</ehcache>
2.michael/hibernate/cache/ehcache/ehcache.xml(指定的配置文件)
<strong><?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd"
updateCheck="true" monitoring="autodetect"
dynamicConfig="true">
<diskStore path="java.io.tmpdir"/>
<transactionManagerLookup class="net.sf.ehcache.transaction.manager.DefaultTransactionManagerLookup"
properties="jndiName=java:/TransactionManager" propertySeparator=";"/>
<cacheManagerEventListenerFactory class="" properties=""/>
<cacheManagerPeerProviderFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=automatic,
multicastGroupAddress=230.0.0.1,
multicastGroupPort=4446, timeToLive=1"
propertySeparator=","
/>
<cacheManagerPeerListenerFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"/>
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
diskSpoolBufferSizeMB="30"
maxElementsOnDisk="10000000"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
statistics="false"
/>
<cache name="sampleCache1"
maxElementsInMemory="10000"
maxElementsOnDisk="1000"
eternal="false"
overflowToDisk="true"
diskSpoolBufferSizeMB="20"
timeToIdleSeconds="300"
timeToLiveSeconds="600"
memoryStoreEvictionPolicy="LFU"
transactionalMode="off"
/>
<cache name="sampleCache2"
maxElementsInMemory="1000"
eternal="true"
overflowToDisk="false"
memoryStoreEvictionPolicy="FIFO"
/>
<cache name="sampleCache3"
maxElementsInMemory="500"
eternal="false"
overflowToDisk="true"
timeToIdleSeconds="300"
timeToLiveSeconds="600"
diskPersistent="true"
diskExpiryThreadIntervalSeconds="1"
memoryStoreEvictionPolicy="LFU"
/>
<cache name="sampleReplicatedCache1"
maxElementsInMemory="10"
eternal="false"
timeToIdleSeconds="100"
timeToLiveSeconds="100"
overflowToDisk="false">
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
<bootstrapCacheLoaderFactory
class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"/>
</cache>
<cache name="sampleRepicatedCache2"
maxElementsInMemory="10"
eternal="false"
timeToIdleSeconds="100"
timeToLiveSeconds="100"
overflowToDisk="false">
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
properties="replicateAsynchronously=false, replicatePuts=false,
replicatePutsViaCopy=false, replicateUpdates=true,
replicateUpdatesViaCopy=true, replicateRemovals=false"/>
</cache>
<cache name="sampleReplicatedCache3"
maxElementsInMemory="10"
eternal="false"
timeToIdleSeconds="100"
timeToLiveSeconds="100"
overflowToDisk="true">
<cacheEventListenerFactory
class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
properties="asynchronousReplicationIntervalMillis=200"/>
</cache>
</ehcache><span style="color:#333300;"><span style="font-family:Helvetica, Tahoma, Arial, sans-serif;color:#ff0000;"><span style="font-size: 14px; line-height: 25.2000007629395px; background-color: rgb(255, 255, 102);">
</span></span></span></strong>