我有一个Singleton对象,它包含了我的" Spring"所需的所有数据。基于仪表板。我将这个单例对象存储在我在登录期间从控制器收到的httpservlet请求中。
servlet.getSession().setAttribute(SESSION_DATA, sessionData);
登录后,我检查sessionData是否已变为null,并尝试从servlet.session.attribute
检索它。但是servlet.session.attribute
的所有属性都变为空
有没有办法阻止session.attribute
变为空?
if (sessionData == null)
if (httpServlet != null && httpServlet.getSession() != null
&& httpServlet.getSession().getAttribute(SESSION_DATA) != null) {
log.info("Recovering sessionData from http session");
sessionData = (SessionDataManager) httpServlet.getSession().getAttribute(SESSION_DATA);
} else {
log.warn((httpServlet == null) ? "httpServlet is null" : "httpServlet is not null");
if (httpServlet != null) {
log.warn((httpServlet.getSession() == null) ? "httpServlet.getSession is null"
: "httpServlet.getSession is not null");
if (httpServlet.getSession() != null)
log.warn((httpServlet.getSession().getAttribute(SESSION_DATA) == null)
? "httpServlet.getSession.getAttribute(SESSION_DATA) is null"
: "httpServlet.getSession.getAttribute(SESSION_DATA) is not null");
}
}
答案 0 :(得分:0)
我编辑了web.xml
以添加以下行,以增加会话死亡的时间。
我注意到onDestroy
被调用,并且在没有任何线程访问过滤器之后读取了doFilter。因此增加超时是对我有用的解决方案之一。
<session-config>
<session-timeout>10</session-timeout>
</session-config>
此值以分钟为单位。要将其设置为无限,请将值设置为
-1