我有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快照。我不明确创建任何类型的cookie或会话的。

任何想法发生了什么?这可能是因为会话过期或无效莫名其妙,但为什么和谁?

我甚至试图与(LiftRules.enableLiftGC = false)以禁用liftGC但这并不影响

有帮助吗?

解决方案

我想象的问题是,同时点击你身边,你不小心创建一个新的会话。这可以解释为什么你没有得到会话关闭事件:旧的会话仍然存在,但你不再使用它。我建议你打印出会话ID对每个请求,看看它的变化。

您可能会失去会话,因为会话cookie到期,或因为你不是URL编码的一些链接(见HttpServletResponse.encodeURL),或者因为你浏览你的应用程序上下文路径之外。

其他提示

什么是你的会话过期时间在LiftRules设置?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top