Ich verwende ehcache in einer Webapp, deren Versionen parallel bereitgestellt sind eine Tomcat-Instanz Dies ist eine praktische Möglichkeit, neue Versionen bereitzustellen, ohne eine Anwendung anzuhalten.
Ich habe jedoch ein Problem mit dieser Vorgehensweise: Auch wenn ich dem Cache und dem Plattenspeicher je nach Version der Webanwendung unterschiedliche Namen gebe, werden alle Caches gestoppt, wenn beendet wird eine Instanz.
Meine Konfiguration lautet:
%Vor% ${project.version}
und ${buildNumber}
wird während des Build-Prozesses durch maven ersetzt.
Weiß jemand, wie man dieses unerwünschte Verhalten vermeidet?
Ich verwende ehcache-core-2.4.3 und hibernate-ehcache-4.3.8.
Die Funktion net.sf.ehcache.constructs.web.ShutdownListener
funktioniert, indem ALLE -Cache-Manager heruntergefahren werden.
Die einzige Möglichkeit, dass dies für Sie funktioniert, besteht darin, sicherzustellen, dass Ihre Cache-Manager in verschiedenen Klassenladeprogrammen landen, dh dass ehcache vom Klassenladeprogramm für Webanwendungen und nicht vom Container geladen wird.
Stellen Sie in der WEB-INF/lib
Ihrer App "ehcache jar" bereit? Wenn ja, bist du sicher, dass es keinen Ehcache im Klassenpfad von Tomcat gibt?
Wenn diese Lösung immer noch nicht funktioniert, können Sie besser Ihre eigene ServletContextListener
erstellen, die nur den Cache-Manager von der enthaltenen Anwendung herunterfahren würde.