标准会话管理器——StandardManager

用于保存状态的会话对象已经有了,现在就需要一个管理器来管理所有会话,例如会话id生成、根据会话id找出对应的会话、对于过期的会话进行销毁等等操作。用一句话描述标准会话管理器:提供一个专门管理某个web应用所有会话的容器,并且会在web应用启动停止时刻进行会话重加载和持久化。

会话管理主要提供的功能包括会话ID生成器、后台处理(处理过期会话)、持久化模块及会话集的维护。

 

首先看会话ID生成器,它负责为每个会话生成分配一个唯一标识,例如最终会生成类似“326257DA6DB76F8D2E38F2C4540D1DEA”字符串的会话标识,具体的默认生成算法主要依靠jdk提供的SHA1PRNG算法,如果在集群环境中,为了方便识别会话归属,它最终生成的会话标识类似于“326257DA6DB76F8D2E38F2C4540D1DEA.tomcat1”,后面会加上tomcat集群标识jvmRoute变量值,这里假设其中一个集群标识配置为“tomcat1”。如果你想置换随机数生成算法,可以通过配置server.xml的manager节点secureRandomAlgorithm及secureRandomClass属性达到修改算法的效果。

其次看下如何对过期会话进行处理。负责对会话是否过期的逻辑判断主要在backgroundProcess模块,在tomcat容器中会有一条线程专门用于执行后台处理,当然也包括标准会话管理器的backgroundProcess,不断循环判断所有的会话中是否有过期的,一旦过期则从会话集中删除此会话。

最后是关于持久化模块和会话集的维护,由于标准会话定位于提供一个简单便捷的管理器,所以持久化和重加载操作并不会太灵活且扩展性弱,tomcat会在每个StandardContext(web应用)停止时调用管理器将属于此web应用的所有会话持久化到磁盘,文件名为SESSIONS.ser,而目录路径则由server.xml的Manager节点pathname指定或Javax.servlet.context.tempdir变量指定,默认存放路径为%CATALINA_HOME%/work/Catalina/localhost/web’name/SESSIONS.ser。当web应用启动时又会加载这些被持久化的会话,加载完成后SESSIONS.ser文件将会被删除,所以每次启动成功后就不会看到此文件的存在。另外会话集的维护是指提供创建新会话对象、删除指定会话对象及更新会话对象的功能。

标准会话管理器是我们常用的会话管理器,也是tomcat默认的一个会话管理器,对它进行深入了解有助于对tomcat会话功能的把握,同时对后面其他会话管理器的理解也更容易。

点击订购作者《Tomcat内核设计剖析》

时间: 2024-10-29 23:44:11

标准会话管理器——StandardManager的相关文章

tomcat会话之持久化会话管理器

前面提到的标准会话管理器已经提供了基础的会话管理功能,但在持久化方面做得还是不够,或者说在某些情景下无法满足要求,例如把会话以文件或数据库形式存储到存储介质中,这些都是标准会话管理器无法做到的,于是另外一种会话管理器被设计出来--持久化会话管理器. 在分析持久化会话管理器之前不妨先了解另外一个抽象概念会话存储设备Store,引入这个概念是为了更清晰方便地实现各种会话存储方式.作为存储设备最重要的操作无非就是读写操作,读即是将会话从存储设备加载到内存中,而写则将会话写入存储设备中,所以定义了两个重

集群增量会话管理器——DeltaManager

DeltaManager会话管理器是tomcat默认的集群会话管理器,它主要用于集群中各个节点之间会话状态的同步维护,由于相关内容涉及到集群,可能会需要一些集群通信相关知识,如果有疑问可结合集群相关章节. 集群增量会话管理器的职责是将某节点的会话该变同步到集群内其他成员节点上,它属于全节点复制模式,所谓全节点复制是指集群中某个节点的状态变化后需要同步到集群中剩余的节点,非全节点方式可能只是同步到其中某个或若干节点.在集群中全节点会话复制的一个大致步骤如下图所示,客户端发起一个请求,假设通过一定的

shiro和spring集成时session管理器超时时间问题

问题描述 shiro和spring集成时session管理器超时时间问题 这是我的配置文件,我配置了并发人数控制和动态权限过滤,然后session超时时间这里也是配置了的,然后并没有什么鸟用,在登录以后获取超时时间也是正常的,但还是1分钟就过期了. <?xml version="1.0" encoding="UTF-8"?> xmlns:util="http://www.springframework.org/schema/util"

ASP.NET 中 Session 实现原理浅析 [2] 状态管理器

asp.net|session 状态管理本来是一件很美好的事情,嘿嘿,只可惜总是有些厂商在实现的时候考虑得不那么周全.例如 MS 在 ASP 中的状态管理实现就比较烂,因为只实现了一个进程内的基于内存的状态管理,故而存在很多问题: 1.所有的 Session 数据都保存在 Web 服务的进程中,会造成服务器支持会话数量受到服务器内存资源的限制问题,同时也因为大量非活动会话导致内存被无效占用. 2.服务器进程崩溃会导致所有的会话数据丢失. 3.会话无法跨进程或在负载均衡情况下使用,除非负载均衡技术

[翻译] SoundManager 音频管理器

SoundManager 音频管理器 https://github.com/nicklockwood/SoundManager Purpose SoundManager is a simple class for playing sound and music in iOS or Mac apps. SoundManager是一个简单的用来播放音乐的类.   Supported OS & SDK Versions Supported build target - iOS 7.0 / Mac OS

《实施Cisco统一通信管理器(CIPT1)》——1.2 CUCM概述

1.2 CUCM概述 实施Cisco统一通信管理器(CIPT1) Cisco UC(统一通信)是基于IP的通信系统,它集成了语音.视频.数据以及移动产品和应用.这一系统能够实现更加高效而又安全的通信,并且能够改变人们的通信方式.UC的出现与电报的产生一样,都代表了通信方式的根本性变革.UC通过将语音.视频和数据相集成,为高效通信消除了地域阻碍.技术的发展和进步也会使业务变得更加流畅.对于那些我们早已触手可得的信息,UC能够将其共享,从而建立知识体系并创造价值. Cisco UC是集成化解决方案的

《实施Cisco统一通信管理器(CIPT1)》一1.2 CUCM概述

1.2 CUCM概述 实施Cisco统一通信管理器(CIPT1) Cisco UC(统一通信)是基于IP的通信系统,它集成了语音.视频.数据以及移动产品和应用.这一系统能够实现更加高效而又安全的通信,并且能够改变人们的通信方式.UC的出现与电报的产生一样,都代表了通信方式的根本性变革.UC通过将语音.视频和数据相集成,为高效通信消除了地域阻碍.技术的发展和进步也会使业务变得更加流畅.对于那些我们早已触手可得的信息,UC能够将其共享,从而建立知识体系并创造价值. Cisco UC是集成化解决方案的

深信服AC1300售1U网络行为管理器

[IT168 行情]深信服 AC1300是一款标准1U的网络行为管理器,吞吐量最高可达300Mbps,能发会话数达500000,支持故障时BYPASS,具备4个1000 Base-T 千兆电口,整体表现十分不错.目前在商家北京晨悦浩祥(13126655821)处了解到,该产品春节促销特价中,感兴趣的朋友可以联系文末商家. 深信服 AC1300 深信服 AC1300是一款针对高端用户的上网行为管理,吞吐量最高可达300Mbps,能发会话数达500000,并发用户数 ≤800,转发延时小于0.1ms

深入理解和改进JSP/Servlet会话管理机制

js|servlet 在Web服务器端编程中,会话状态管理是一个经常必须考虑的重要问题.本文分析JSP/Servlet的会话管理机制及其所面临的问题,然后提出了一种改进的会话管理方法. 一.Servlet的会话管理机制 根据设计,HTTP是一种无状态的协议.它意味着Web应用并不了解有关同一用户以前请求的信息.维持会话状态信息的方法之一是使用Servlet或者JSP容器提供的会话跟踪功能.Servlet API规范定义了一个简单的HttpSession接口,通过它我们可以方便地实现会话跟踪. H