Frage

Ich habe SessionVar wie dies in Aufzug:

object MyObject {
   object myVar extends SessionVar[Box[MyObject]](Empty)
}

Dann habe ich Wert einmal für myVar:

 MyObject.myVar(Full(value))

Mein Problem ist, dass nach einiger Zeit (1-5 Minuten) meineVar seinen Wert verlieren wird, das heißt, es wird Wert wieder hat leert. Dies ist nicht wegen Inaktivität, da ich Seiten bin ständig klicken. Mein Code setzt Wert nicht zu leeren. Während dieser 1-5 Minuten wird die meineVar korrekt funktionieren. Die Protokolle enthalten keine relevanten Nachrichten.

Ich habe versucht, Shutdown-Methode meineVar hinzufügen, aber es wird nicht genannt zu werden.

 override protected def onShutdown(session: CleanUpParam): Unit = {
   Log.error("shutdown executed")
 }

Ich bin mit Aufzug in Anlegestelle über mvn jetty:run Befehl. Ich bin mit 1.1-SNAPSHOT von Aufzug. Ich bin nicht ausdrücklich jede Art von Cookie oder Session zu schaffen.

Alle Ideen, was geschieht? Es könnte sein, dass Sitzung abläuft oder Ungültigmachungseinträge irgendwie, aber warum und von wem?

Ich habe sogar versucht zu deaktivieren liftGC mit (LiftRules.enableLiftGC = false), aber das wirkt sich nicht auf.

War es hilfreich?

Lösung

Ich stelle mir vor, dass das Problem, dass, während um klicken, werden Sie aus Versehen eine neue Sitzung zu erstellen. Das würde erklären, warum Sie nicht die Sitzung Shutdown-Ereignis bekommen: die alte Sitzung existiert noch, aber du bist nicht mehr verwenden. Ich schlage vor, dass Sie mit jeder Anforderung der Session-ID ausdrucken und sehen, ob sie sich ändert.

Sie können die Sitzung zu verlieren, weil der Session-Cookie abläuft, oder weil Sie nicht URL-kodiert einige Links (siehe HttpServletResponse.encodeURL), oder weil Sie Ihre Anwendung Kontextpfad der Navigation außerhalb.

Andere Tipps

Was ist Ihre Sitzung Ablaufzeit-Set in LiftRules?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top