使用IDEA 实现简单的session钝化和活化

使用IDEA 实现web的session钝化和活化

首先要理清楚活化与钝化的本质——就是序列化与反序列化。

钝化:简单来说, 就是将session对象从内存中存到硬盘。

活化:将session对象从硬盘中读取。session获取某一对象时, 先从内存中寻找, 若内存中不存在, 则直接尝试从钝化的文件中寻找。

这样做的好处是当服务器突然宕机,将session的数据保留(钝化),重启之后可以直接使用(活化)。

监听session对象的钝化、活化需要使用到 HttpSessionActivationListener 接口。

  • 第一步
    首先我们先创j建一个监听器
package Listener;

import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionEvent;
import java.io.Serializable;

public class ActiveListener implements HttpSessionActivationListener, Serializable {
     
    private int num;
    private String user;

    public int getNum() {
     
        return num;
    }
    public void setNum(int num) {
     
        this.num = num;
    }
    public String getUser() {
     
        return user;
    }
    public void setUser(String user) {
     
        this.user = user;
    }

    //监听时刻:即将钝化之前
    @Override
    public void sessionWillPassivate(HttpSessionEvent se) {
     
        System.out.println("即将钝化之前:ActiveListener对象会随着session的钝化而钝化");
    }
    //监听时刻:完成活化之后
    @Override
    public void sessionDidActivate(HttpSessionEvent se) {
     
        System.out.println("活化后:ActiveListener对象会随着session的活化而活化");
    }
}

由于钝化活化的本质是序列化与反序列化,所以一定要继承 Serializable 接口

  • 第二步
    实现session的钝化和活化并不需要配置 web.xml, 但需要配置一个名为 context.xml 的文件
    该文件存放的位置默认是在项目的 tomcat 文件夹中
    例如:
    /tomcat/项目名/conf/context.xml
    找到之后将它打开
    并在中加入如下字段:
	<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="5">
        <Store className="org.apache.catalina.session.FileStore" directory="D:\session"> </Store>
    </Manager>

使用IDEA 实现简单的session钝化和活化_第1张图片
至于 org.apache.catalina.session.PersistentManagerorg.apache.catalina.session.FileStore 这里不做过多说明,要详细了解请参考http://blog.sina.com.cn/s/blog_960b18410102v54r.html
这样基本的配置已经完成了

  • 第三步
    创建两个简单的JSP
    write.jsp:
    使用IDEA 实现简单的session钝化和活化_第2张图片
    read.jsp:
    使用IDEA 实现简单的session钝化和活化_第3张图片

一个用于session的写入硬盘,一个用于session从硬盘读取

  • 第四步

接下来就是运行了
首先先运行 write.jsp
使用IDEA 实现简单的session钝化和活化_第4张图片
使用IDEA 实现简单的session钝化和活化_第5张图片
虽然在 context.xml 中配置的时间是5s —— maxIdleSwap="5"
但实际上由于服务器初始化等问题可能等待的时间不止5s

接下来重新打开tomcat服务器, 运行 read.jsp
在这里插入图片描述
使用IDEA 实现简单的session钝化和活化_第6张图片
这样就简单实现了session的钝化与活化。

你可能感兴趣的:(JavaWeb,java,tomcat,session)