各们朋友大家好:    当我关闭Tomcat,重新启动后,session中保存的对象还依然存在,仍然可以使用,不知这是什么原因?
                               谢谢!

解决方案 »

  1.   

    按道理说放在session里面的东西在你的服务器关闭之后就全部销毁了,不知道LZ是不是启动的时候就自动加载了。
      

  2.   

    楼上的朋友:你好
         "启动的时候就自动加载了"是说自动读取tomcat下保存的session文件?
      

  3.   

    想请问LZ,应用是不是你开发的?如果不是的话,可能是应用本身有cookies机制,应用启动时读入cookies,创建session信息。csdn上登录后两个星期不用再登录也是这样的啦。
      

  4.   

    seetomcat\work\Catalina\localhost\xxx\SESSIONS.serxxx是你的context pathsession在服务器关闭的时候被序列化了(xxx\SESSIONS.ser, yyy\SESSIONS.ser..都是相同的)启动的时候加载的
      

  5.   

    shine333(enihs) :
        我在session中保存的对象并没有实现序列化接口.
      

  6.   

    重启后session中的对象可能被重建,但原session肯定别清空了
      

  7.   

    楼上的朋友你们好:
        我先是通过
       HttpSession tSession = request.getSession(false);
       if (tSession == null){
           request.setAttribute("_error","用户连接超时");
           return mapping.findForward("/XXXX");
        }
       XXObject tObj = (XXObject) tSession.getAttribute("xxo");
       if (tObj == null){
           request.setAttribute("_error","用户连接超时");
           return mapping.findForward("/XXXX");
       }
      

  8.   

    刚才Tomcat关闭的时候,同时将应用下面的SESSIONS.ser删除后重新启动,可以达到想要的结果,有什么办法可以让tomcat在启动的时候不去读取SESSIONS.ser?
      

  9.   

    所以说你的问题就是session被保存了。千万不要
    〉有什么办法可以让tomcat在启动的时候不去读取SESSIONS.ser?这个是正常的,session没有超时,服务器就重启了,客户感觉不到服务器重启了,那才是王道。假如服务器关闭时间长,客户端早关了(即使同一个IP,但进程也换了),session早没了。你要确保的是,
    1 每次用户近来,都需要先正常登录
    2 你放到session的都应该是可序列化的,或者设为transient
      

  10.   

    tomcat可以将session保存,默认的是用文件保存,另外还可设置为用mysql保存,在重新启动的时候恢复会话。
      

  11.   

    把浏览器重启试试阿。 刘览器没重启的话,会存在cookie里的,尤其是第一次运行jsp的时候,服务器会用cookie和session两种方法存储会话的。
      

  12.   

    tomcat 本来好象如果重启动的时间不长的话,session好象会被保存下来的,我也遇到这种情况
    weblogic的话,好象对session情况处理得比较好一点
      

  13.   

    其实问题很好解决:
     tomcat本身就是个容器,存放jsp,servlet
        所有servlet(纯servlet,lisenter,filter)tomcat结束时应该都会执行类似
           destroy();
        在这方法里面写的东西tomcat结束就会自动执行。所以想让session对象tomcat重启时自动消失
          就在里面写个session.removeAttribute(****)就行了;