HTTPSession和Spring会话范围bean的行为

时间:2013-04-01 14:31:02

标签: spring session scope session-timeout

我有一个关于HTTPSession和Spring bean的问题,我完全不明白。在web.xml中,我将会话超时设置为1分钟:

<session-config>
    <session-timeout>1</session-timeout>
</session-config>

在每个Ajax请求中,我会检查会话是否有效:

if(request.getSession(false) == null)
            System.out.println("Session Invalid");

但看起来它在分钟过后仍然有效(它不是空的)。

然后发生了令我困惑的事情。我有几个带有这个注释的bean:

@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)

第一分钟,它们工作正常,bean的相同实例总是被注入,我可以存储一些信息并在以后恢复它,但如果我等待一分钟然后我发送另一个请求,那么另一个实例bean被注入,我的信息丢失了。

我相信正在发生的事情是,由于会话应该已经过期,注入的bean是不同的,但是为什么 request.getSession(false)不为null而 request.getSession( false)。isValid() true

0 个答案:

没有答案