Scala、Lift和SessionVar将丢失其内容

Scala、Lift和SessionVar将丢失其内容,session,scala,lift,Session,Scala,Lift,我在电梯里有这样的SessionVar: object MyObject { object myVar extends SessionVar[Box[MyObject]](Empty) } 然后我为myVar设置了一次值: MyObject.myVar(Full(value)) 我的问题是,在一段时间(1-5分钟)之后,myVar将失去它的值,也就是说,它的值将再次为空。这不是由于不活动,因为我经常点击页面。我的代码没有将值设置为空。在这1-5分钟内,myVar将正常工作。日志不包含

我在电梯里有这样的SessionVar:

object MyObject {
   object myVar extends SessionVar[Box[MyObject]](Empty)
}
然后我为myVar设置了一次值:

 MyObject.myVar(Full(value))
我的问题是,在一段时间(1-5分钟)之后,myVar将失去它的值,也就是说,它的值将再次为空。这不是由于不活动,因为我经常点击页面。我的代码没有将值设置为空。在这1-5分钟内,myVar将正常工作。日志不包含任何相关消息

我试图将shutdown方法添加到myVar中,但没有调用它

 override protected def onShutdown(session: CleanUpParam): Unit = {
   Log.error("shutdown executed")
 }
我通过
mvnjetty:run
命令运行码头升降机。我正在使用电梯的1.1快照。我没有明确创建任何类型的cookie或会话

知道发生了什么吗?会话可能会以某种方式过期或失效,但原因何在,由谁负责


我甚至尝试用(
LiftRules.enableLiftGC=false
)禁用liftGC,但这并不影响。

在LiftRules中设置的会话到期时间是多少?

我想问题在于,在点击时,您意外地创建了一个新会话。这可以解释为什么您没有得到会话关闭事件:旧会话仍然存在,但您不再使用它。我建议您打印每个请求的会话ID,并查看它是否发生更改


您可能正在丢失会话,因为会话cookie即将过期,或者您没有对某些链接进行URL编码(请参阅HttpServletResponse.encodeURL),或者您正在应用程序的上下文路径之外导航。

我如何找到这一点?我还没有设置。似乎这是一些暂时的小故障,我无法再复制。