Zwischengespeicherte Caches aller Versionen einer Webapplikation werden geschlossen

8

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.

    
Ludovic Pénet 19.06.2015, 13:03
quelle

2 Antworten

2

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.

    
Louis Jacomet 26.06.2015, 11:42
quelle
0

Einige Details fehlen in Ihrer Anfrage.

1) Wie stoppen Sie den Cache?

2) Wie verwenden Sie die Anwendung in Tomcat?

3) Haben Sie den Speicherort für das Cache-Objekt überprüft?

Aber als Verhalten wird der gesamte Cache gelöscht, sobald Sie Tomcat neu starten.

    
sach 25.06.2015 07:15
quelle

Tags und Links