Io uso ehcache in una webapp le cui versioni sono deployed in parallel su un'istanza di Tomcat. Questo è un modo pratico per distribuire nuove versioni senza arrestare un'applicazione.Le cache di tutte le versioni di un'applicazione Web distribuita in parallelo vengono arrestate
Io però ho un problema con questo modo di procedere: anche se io do la cache e memorizzare su disco nomi diversi, a seconda delle versioni della webapp, tutti cache sono fermato quando si arresta uno esempio.
La mia configurazione è:
<?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}
e ${buildNumber}
essere sostituito dal Maven durante il processo di compilazione.
Qualcuno sa come evitare questo comportamento indesiderato?
Sto utilizzando ehcache-core-2.4.3 e hibernate-ehcache-4.3.8.
Forse ho sbagliato a indovinare, ma non dovrebbe essere impostato su "diskPersistence" su true. Non conosco i componenti interni di EhCache, ma se le cache sono conservate solo in memoria e si chiude un'istanza (nella stessa JVM perché è ancora un'istanza di tomcat), sembra giusto che la cache sia deselezionata. Mi – meistermeier
Correggetemi se sbaglio, ma gli stati doc: diskPersistent: «Per le cache che di overflow su disco, se la cache del disco persiste tra le istanze CacheManager» falso è il comportamento che desidero. –
Non so dove trovare documenti completi per ecache 2.4 ma ho ricevuto le mie informazioni da http://ehcache.org/documentation/2.8/configuration/fast-restart/section "Compatibilità con versioni precedenti" – meistermeier