我在一個Tomcat實例上的版本爲deployed in parallel的web應用中使用ehcache。這是在不停止應用程序的情況下部署新版本的一種便捷方式。並行部署的web應用的所有版本的緩存都關閉
然而,我有這個辦法進行了一個問題:即使我給高速緩存和磁盤儲存不同的名稱,這取決於Web應用程序的版本,停止一個實例時所有高速緩存停止。
我的配置是:
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd" name="mywebapp-${project.version}_build_${buildNumber}">
<defaultCache
maxElementsInMemory="1000"
maxElementsOnDisk="10000"
eternal="false"
timeToLiveSeconds="300"
timeToIdleSeconds="300"
overflowToDisk="true"
diskPersistent="false"
memoryStoreEvictionPolicy="LRU"
statistics="true"
/>
<cache
maxElementsInMemory="1000"
maxElementsOnDisk="10000"
name="org.hibernate.cache.internal.StandardQueryCache"
eternal="false"
timeToLiveSeconds="300"
timeToIdleSeconds="300"
overflowToDisk="true"
diskPersistent="false"
statistics="true"/>
<cache
name="org.hibernate.cache.spi.UpdateTimestampsCache"
maxElementsInMemory="10000"
maxElementsOnDisk="100000"
timeToLiveSeconds="300"
timeToIdleSeconds="300"
eternal="false"
overflowToDisk="true"
diskPersistent="false"
statistics="true"/>
<cache
name="query.Presences"
maxElementsInMemory="100"
maxElementsOnDisk="1000"
eternal="false"
timeToLiveSeconds="300"
timeToIdleSeconds="300"
overflowToDisk="true"
diskPersistent="false"
statistics="true"/>
<diskStore path="java.io.tmpdir/mywebapp-${project.version}_build_${buildNumber}"/>
</ehcache>
${project.version}
和${buildNumber}
在生成過程中被替換的行家。
有人知道如何避免這種不需要的行爲嗎?
我正在使用ehcache-core-2.4.3和hibernate-ehcache-4.3.8。
也許我猜錯了,但不應該將'diskPersistence'設置爲true。我不知道EhCache的內部結構,但是如果緩存僅保存在內存中,並且關閉了一個實例(在同一個JVM中,因爲它仍然是一個tomcat實例),緩存清除聽起來是正確的。 – meistermeier
糾正我,如果我錯了,但DOC狀態: diskPersistent:«對於高速緩存溢出到磁盤,磁盤緩存是否CacheManager的實例之間仍然存在» 假是我想要的行爲。 –
我不知道在哪裏可以找到完整的文檔爲ecache 2.4,但我從 – meistermeier