Tomcat原理学习---session管理

Catalina通过一个叫管理器的组件来完成session管理工作,该组件由org.apache.catalina.Manager 接口表示。一个管理器通常跟一个上下文容器相关联,它负责创建、更行以及销毁session对象并能给任何请求组件返回一个合法的session。 
默认情况下管理器将session对象存储在内存中,但是Tomcat也允许将session对象存储在文件或者数据库中(通过JDBC)。




Session:
由于一个Session对象常常被一个管理器持有,所以接口提供了setManager和getManager方法来关联一个Session对象和一个管理器。
管理器调用setValid方法来重置一个session的合法性。每次一个Session被进入的时候,都会调用access方法更新它的最后访问时间。最后,管理器可以调用expire方法来终止一个expire方法,使用getSession可以获得一个包装在该外观内的HttpSession对象。


StandardSession 类 :
StandardSession类是Session接口的标准。它实现了javax.servlet.http.HttpSession 和org.apache.catalina.Session之外,它还实现了java.lang.Serializable接口来使得Session对象可序列化。
该类的构造器获得一个管理器实例来强制使得每个Session对象都有一个管理器。
StandardSessionFacade 类 :
要将一个Session对象传递给一个servlet,Catalina会初始化一个StandardSession类填充它并把它传递给servlet。但是它传递的是StandardSession对象,该类是先了javax.servlet.http.HttpSession接口中的方法。这样,servlet就不能将HttpSession向下转化为StandardSessionFacade类来访问它的共有方法。


管理器 :
管理器用来管理Session对象。例如它创建Session对象并销毁它们。管理器由org.apache.catalina.Manager接口表示。在 Catalina中,org.apache.catalina.session包中类ManagerBase类提供了常用函数的基本实现。ManagerBase类有两个直接子类:StandardManager和PersistentManagerBase类。在运行的时候,StandardManager将session 对象存放在内存中。但是,当停止的时候,它将Session对象存放到文件中。当它再次启动的时候,重新载入Session对象。PersistentManagerBase类作为一个管理器组件将Session对象存放到二级存储器中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值