2009-03-04 9 views
8

Ich mag die folgende algorythm oben Ehcache implementieren:Abrufen von abgelaufenen Objekte in Ehcache

  • versuchen, ein Element aus dem Cache
  • zu erhalten, wenn das Element nicht
    • abgelaufen ist dient der Wert
  • sonst
    • dienen der abgelaufenen Wert
    • aktualisieren Sie das Element im Hintergrund

Aber ich habe nie ein abgelaufenes Element (Element.isExpired()) erhalten. Ich habe versucht, mit meiner Cache-Konfiguration zu spielen (vor allem TimeToLive und TimeToIdle), aber ich kann nicht so funktionieren, wie ich es möchte. Ich kann die Schlüssel im Cache auflisten, aber wenn ich ein abgelaufenes Element bekomme(), bekomme ich immer eine Null.

Was mache ich falsch?

+1

Nur neugierig, haben Sie jemals eine Lösung oder einen alternativen Ansatz dazu gefunden? –

Antwort

4

Sie machen nichts falsch. Die Dokumentation besagt, dass das Abrufen eines abgelaufenen Elements es aus dem Cache entfernt und null zurückgibt.

Ich vermute, die einzige Zeit, die ein Element als abgelaufen erscheint, ist, wenn Sie einen Ereignis-Listener für Elementablauf-Ereignisse haben, aber ich kann nicht sagen, dass ich das jemals getestet habe.

+0

Achten Sie auf den Ereignis-Listener (notifyElementExpiry). Nur der Schlüssel des Elements ist bekannt. Nach folgendem Satz in der API: Da das Element abgelaufen ist, ist nur der Schlüssel des Elements bekannt. Hatte nur Probleme damit. – schoeggii