一、什么是 session 的钝化和活化

假设我们在淘宝中用户过多的时候,虽然 session 没有下限,但 session 的数量就会不断增多。之后就会导致内存无法承受,此时就会有一些 session 长时间都没有活动。服务器启动时就会将这些很久没有活动的 session 放到硬盘上,让内存给空出来。就会使得很多的session被保存到硬盘上以此来空出内存。而即便之后需要再次访问 session,它就会再次从硬盘中将 session给放到内存中来使用。这样用户就不会感觉到自己掉线了。这个过程就是 session 的钝化和活化。

而钝化和活化最终都是把 session 保存到硬盘中,再从硬盘中回到内存中。
但是他们和session序列化、反序列化发生的时间点不一样。session序列化反序列化是关闭和启动服务器,session钝化和活化是没有关闭和启动服务器就完成了。

二、实现session的钝化和活化

首先要配置一下session的过期时间,session超过一分钟没有使用,那么久被存储到硬盘中
在这里插入图片描述

创建实体类Person.java,需要实现HttpSessionActivationListener和Serializeable
在这里插入图片描述
HttpSessionActivationListener有两个方法需要实现,功能分别是实体类在钝化时候调用和活化时候调用
void sessionDidActivate(HttpSessionEvent se);
void sessionWillPassivate(HttpSessionEvent se);

关注我的公众号SpaceObj 领取idea系列激活码

posted on 2023-05-10 18:08  张伯灵  阅读(254)  评论(0)    收藏  举报