如何在eclipse重新加载apache时防止session.attribute变为null

时间:2017-08-29 05:40:02

标签: spring eclipse apache session

我有一个Singleton对象,它包含了我的" Spring"所需的所有数据。基于仪表板。我将这个单例对象存储在我在登录期间从控制器收到的httpservlet请求中。

servlet.getSession().setAttribute(SESSION_DATA, sessionData);

登录后,我检查sessionData是否已变为null,并尝试从servlet.session.attribute检索它。但是servlet.session.attribute的所有属性都变为空

  • 每隔几分钟
  • 保存源文件时自动加载我的apache(通过eclipse)

有没有办法阻止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");

                }
            } 

1 个答案:

答案 0 :(得分:0)

我编辑了web.xml以添加以下行,以增加会话死亡的时间。

我注意到onDestroy被调用,并且在没有任何线程访问过滤器之后读取了doFilter。因此增加超时是对我有用的解决方案之一。

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

此值以分钟为单位。要将其设置为无限,请将值设置为-1