2013-09-06 6 views
6

La documentazione EHCache dice:EhCache: rimuovere l'elemento scaduto (a causa di timeToIdleSeconds o timeToLiveSeconds) senza tentare di ottenerlo?

  • Accesso a un voce nel myCache che è stato inattivo per più di un'ora (timeToIdleSeconds) provoca l'elemento di essere sfrattati.
  • Se una voce scade ma non vi si accede e nessun vincolo di risorsa forza lo sfratto, la voce scaduta rimane al suo posto.
  • ottenere un elemento scaduto lo rimuoverà dalla cache e restituirà null.

Se si implementa e registrare un CacheEventListener per ricevere che un elemento è scaduto, è possibile vedere l'evento viene generato quando si tenta di ottenere un elemento scaduto, ma non dopo il 'timeToIdleSeconds'.

E 'possibile forzare la rimozione dell'elemento scaduto dopo che è scaduto? Perché nel mio caso dopo questo tempo nessuno proverà a farlo di nuovo.

Grazie.

+1

vedi anche: http://stackoverflow.com/questions/8838039/ehcache-does-not-remove-element-from-memory-on -evocazione – butallmj

risposta

6

ho fatto con il seguente codice:

cache.evictExpiredElements(); 
cache.flush(); 
+0

L'ho fatto in un modo simile. Ho cercato una soluzione con AUTO-sfratto, ma funziona. Grazie. – gfjr

+0

Anche io volevo farlo automaticamente, ma c'è un suggerimento nei documenti EhCache - 'scaduto'! =' Rimosso', quindi ho dovuto farlo manualmente – skayred