listener:session的钝化和活化

什么是 session 的钝化和活化

假设我们在淘宝中用户过多的时候,虽然 session 没有下限,但 session 的数量就会不断增多。

之后就会导致内存无法承受,此时就会有一些 session 长时间都没有活动。

服务器启动时就会将这些很久没有活动的 session 放到硬盘上,让内存给空出来。

就会使得很多的session被保存到硬盘上以此来空出内存。而即便之后需要再次访问 session,它就会再次从硬盘中将 session给放回来使用。这样用户就不会感觉到自己掉线了。

这个过程就是 session 的钝化和活化。

而钝化和活化最终都是把 session 保存到硬盘中,再从硬盘中回到内存中。

但是他们发生的时间点不一样。一个是关闭和启动服务器,一个是没有关闭和启动服务器就完成了。

二、示例步骤

先不管 HittpSessionActivationListener 监听器接口,先来配置 Tomcat 钝化 session 的参数,把 下面配嚣文件放到 tomcatlconflcatalinaVocalhost目录下!文件名称为项目名称。

<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
   <Store className="org.apache.catalina.session.FileStore" directory="mysession"/>
</Manager>

 

打开 context.xml 把代码添加到35行代码进去,在此处表示对所有代码都生效。

context.xml在Tomcat目录中的conf中!!

访问项目的 index.jsp 页面,这会使 Tomcat 创建 Session 对象,然后等待一分钟

(如果 session 1分钟内没有使用那么 Tomcat 就会钝化它, session 序列化到 Tomcat\work\Catalina\Localhost\listener\mysession 目录下)

Tomcat\work\Catalina\localhost\istenermysession.目录下是否会产生文件,如果产生了,说明钝化 session 的配置成功了,可以开始下一步了。

文件名是 sessionID。扩展名是 .session 。跟刚才的序列化相比,序列化是sessions.ser 但现在是 SessinonID 为名称。

阅读剩余
THE END