Ich verwende ehcache in einer Webapp, deren Versionen deployed in parallel auf einer Tomcat-Instanz sind. Dies ist eine praktische Möglichkeit, neue Versionen bereitzustellen, ohne eine Anwendung zu stoppen.Zwischengespeicherte Caches aller Versionen einer Webanwendung werden geschlossen
Ich habe aber ein Problem mit dieser Art und Weise zu verfahren: auch wenn ich die Cache und Disk-Speicher verschiedenen Namen geben, abhängig von den Versionen der Webapp, alle Caches gestoppt werden, wenn eine Instanz zu stoppen.
Meine config:
<?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}
und ${buildNumber}
von Maven während des Erstellungsprozesses ersetzt.
Weiß jemand, wie man dieses unerwünschte Verhalten vermeidet?
Ich verwende ehcache-core-2.4.3 und Hibernate-ehcache-4.3.8.
Vielleicht bin ich falsch im Raten, aber sollte nicht 'diskPersistence' auf wahr gesetzt werden. Ich kenne die Interna von EhCache nicht, aber wenn die Caches nur im Speicher gehalten werden und Sie eine Instanz herunterfahren (in der gleichen JVM, weil es immer noch eine Tomcat-Instanz ist), klingt es richtig, dass der Cache gelöscht ist. Korrigieren Sie mich – meistermeier
, wenn ich falsch bin, aber die doc heißt es: diskPersistent: «Für Caches, dass Überlauf auf die Festplatte, ob die Festplatten-Cache weiterhin besteht zwischen Cachemanager-Instanzen» falsch ist das Verhalten, das ich wünsche. –
Ich weiß nicht, wo man vollständige Dokumente für Ecache 2.4 finden kann, aber ich habe meine Informationen von http://ehcache.org/documentation/2.8/configuration/fast-restart/Abschnitt "Kompatibilität mit früheren Versionen" – meistermeier