1.客户端访问Web服务器资源,服务器就会创建一个对该客户相对应的HttpSession对象。即使客户已经离开了浏览器,服务器仍要保留与之对应的HttpSession对象,直至超时。
2.服务器通常把那些暂时不活动但未超时的HttpSession对象转移到文件或数据库中,要使用它们的时候在从中取出装入内存。 这种技术叫做Session持久化
3.持久化的作用:
- 提高服务器内存的利用率,保证那些暂停活动的客户端在会话超时之前继续原来的会话
- 在多台web服务器协同对外提供服务的集群系统中,使用Session的持久化技术,某台服务器可以将其中发生改变的Session对象复制给其他服务器。保证了在某台服务器停止工作后可以由其他服务器来接替它与客户端的会话
- 在一个web应用程序重启时,服务器也会持久化该应用程序中所有HttpSession对象,保证客户端的会话活动仍可以继续。
Tomcat使用Session Manager 类来管理Session的持久化,他提供了两个SessionManager类
org.apache.catalina.session.StandardManager
org.apache.catalina.session.PersistentManager
StandardManager是tomcat默认使用的,在web应用程序关闭时,对内存中的所有HttpSession对象进行持久化,把他们保存到文件系统中。
默认的存储文件为<tomcat 安装目录>/work/Catalina/<主机名>/<应用程序名>/sessions.serPersistentManager比StandardManager更为灵活,
只要某个设备提供了实现org.apache.catalina.Store接口的驱动类,PersistentManager就可以将HttpSession对象保存到该设备
4.保存信息: Session cookie 数据库