2009-03-04 9 views
8

mi piacerebbe implementare il seguente algoritmo sopra EHCache:recuperare gli oggetti scaduti in EHCache

  • cercare di ottenere un elemento dalla cache
  • se l'elemento non è scaduto
    • servono il valore
  • altro
    • servire il valore scaduto
    • aggiornare l'elemento in background

Ma non ho mai ottenere un elemento scaduto (Element.isExpired()). Ho provato a giocare con la mia configurazione della cache (in particolare TimeToLive e TimeToIdle) ma non riesco a farlo funzionare come voglio. Posso elencare le chiavi nella cache, ma se "get()" è un elemento scaduto, ottengo sempre un valore nullo.

Cosa sto sbagliando?

+1

Solo curioso, hai mai trovato una soluzione o un approccio alternativo a questo? –

risposta

4

Non stai facendo niente di male. La documentazione dice che ottenere un elemento scaduto lo rimuoverà dalla cache e restituirà null.

Sospetto che l'unica volta che un elemento si presenterà come scaduto è se si dispone di un listener di eventi per gli eventi di scadenza degli elementi ma non posso dire di averlo mai verificato.

+0

Prestare attenzione al listener di eventi (notifyElementExpiry). Solo la chiave dell'elemento è kown. Secondo la frase seguente nell'API: Poiché l'elemento è scaduto, è nota solo la chiave dell'elemento. Ho appena avuto problemi con questo. – schoeggii