我有一个关于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 ?