Session 我们如何扩展单个用户';s会话到期时间?

Session 我们如何扩展单个用户';s会话到期时间?,session,lift,web.xml,session-timeout,Session,Lift,Web.xml,Session Timeout,我在web.xml中这样做是为了调节整个会话过期时间: <session-config> <session-timeout>10</session-timeout> </session-config> 我希望这段代码能让所有SessionVar保持2周的有效期。不幸的是,它不起作用。我们该怎么做呢?乍一看,我觉得这是个坏主意,而且在我看来,您最好使用某种类型的缓存。在为期两周的课程到期后,你想要完成什么?另外,Lift的SessionVa

我在web.xml中这样做是为了调节整个会话过期时间:

<session-config>
    <session-timeout>10</session-timeout>
</session-config>

我希望这段代码能让所有SessionVar保持2周的有效期。不幸的是,它不起作用。我们该怎么做呢?

乍一看,我觉得这是个坏主意,而且在我看来,您最好使用某种类型的缓存。在为期两周的课程到期后,你想要完成什么?另外,Lift的
SessionVar
不会直接存储在会话中,因为Scala函数和其他可能放在那里的项是不可序列化的。如果您想直接使用
HttpSession
-有
ContainerVar
。那么,这是否意味着只要我使用ContainerVar,上面的代码就可以正常工作?同样,由于不知道您希望实现什么,我无法确定它是否“正常工作”。但是,如果您使用
ContainerVar
,您将拥有一个绑定到servlet容器会话的机制。但是,您需要提供自己的序列化程序,以便Lift可以将数据序列化到容器中。它还假设您的容器支持持续2周的会话,并且不存在内存或垃圾收集问题。但是,如果servlet容器能够支持它,那么将
SessionVar
更改为
ContainerVar
并实现序列化程序应该可以。
S.session match {
    case Full(session) => {
        session.httpSession match {
            case Full(httpSession) => httpSession.setMaxInactiveInterval(2 * 7 * 24 * 60 * 60)
            case _ => log.error("There is no HttpSession in the session")
        }
    }
    case _ => log.error("There is no LiftSession in S.session")
}