2010-01-12 60 views
1

我SessionVar這樣的電梯:Scala和電梯和SessionVar在失去它的內容

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

然後我對myVar的設定值一次:

MyObject.myVar(Full(value)) 

我的問題是,經過一段時間( 1-5分鐘)myVar會失去它的價值,也就是說,它會有空值。這不是由於我不斷點擊頁面而導致的不活動。我的代碼不是將值設置爲空。在這1-5分鐘內,myVar會正常工作。日誌中不包含相關消息。

我試圖將關機方法添加到myVar,但它沒有被調用。

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

我正在通過mvn jetty:run命令運行在碼頭的電梯。我正在使用電梯的1.1-SNAPSHOT。我沒有明確地創建任何類型的cookie或會話。

任何想法發生了什麼?這可能是會話過期或無效,但爲什麼和由誰?

我甚至嘗試禁用liftGC(LiftRules.enableLiftGC = false)但不影響。

+0

似乎這是一些暫時的小故障,我不能再重現。 – 2010-01-18 18:34:16

回答

2

我認爲問題在於,在點擊時偶然會創建一個新的會話。這可以解釋爲什麼你沒有得到會話關閉事件:舊會話仍然存在,但你不再使用它。我建議你打印出每個請求的會話ID,看看它是否發生了變化。

由於會話cookie過期或者因爲您不是URL編碼的某些鏈接(請參閱HttpServletResponse.encodeURL),或者因爲您在應用程序的上下文路徑之外導航,您可能會丟失會話。

1

您在LiftRules中設置的會話過期時間是?

+0

我如何發現?我沒有設置它。 – 2010-01-13 15:53:11