Tomcat 中的SessionManager作用

ddatsh 发布于 2011/11/09 11:52
阅读 3K+
收藏 0

网上有关于tomcat 启动报错

org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:373) >> IOException while loading persisted sessions: java.io.EOFException

解决方案 1: 删除.ser 文件 ;2:配置成另一个session manager

 

生成 .ser 文件的方法我知道了

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession s=request.getSession();
        s.setAttribute("name", "dd");
        User u=new User();
        u.setId(1);
        u.setName("test");
        s.setAttribute("u", u);
       
        response.getOutputStream().print("22");
       
    }

关闭tomcat 时,按右上方的叉,就不会生成,按CTRL+C,就会生成

 

我没有明白这个到底是用来干嘛的

是说服务器关闭时,还有一部分连接没有被关闭,就把其中的session信息存储起来

然后启动的时候恢复这些SESSION?然后做什么操作呢?

 

网上找着篇文

Session钝化机制

Session的主要数据被存储在服务器内存中,而服务器会为每个在线用户创建一个Session对象,当在线用户很多时,例如同时有几万或是几十万在线的情况下,Session内存的开销将会十分巨大,会影响Web服务器性能。而Session的钝化机制刚好可解决此问题。

      Session钝化机制的本质就在于把服务器中不经常使用的Session对象暂时序列化到系统文件系统或是数据库系统中,当被使用时反序列化到内存中,整个过程由服务器自动完成。

       Session钝化机制是tomcat服务器提供的一种性能优化策略,不属于java EE规范标准范畴。在tomcat中,Session钝化机制由SessionManager管理。Tomcat提供了两种Session钝化管理器:

   1)org.apache.catalina.session.StandardManger

       StandardManager钝化机制是:当Tomcat服务器被关闭或重启时,tomcat服务器会将当前内存中的Session对象钝化到服务器文件系统中;另一种情况是Web应用程序被重新加载时,内存中的Session对象也会被钝化到服务器的文件系统中。默认情况下钝化后的文件被保存在如下路径:

      Tomcat安装路径/work/Catalina/hostname/applicationname/SESSION.ser

   2)org.apache.catalina.session.Persistentmanager

      PersistentManager提供了比StandardManager更为灵活的Session钝化算法。首先在钝化的时刻选择上进行了扩张。第一种情况如上面1,第二种如上2,第三种情况,可以配置主流内存的Session对象数目,将不长使用的Session对象保存到文件系统或数据库,当用时再重新加载。

     默认情况下,Tomcat提供两个钝化驱动类,org.apache.Catalina.FileStore和org.apache.Catalina.JDBCStore。前者将Session对象钝化到文件系统;后者用来将Session对象钝化到数据库(也可以钝化到指定文件)。

 

 

加载中
0
老盖
老盖
钝化?哪找的文章,应该是持久化吧
ddatsh
ddatsh
嗯,将就看就OK了
返回顶部
顶部