标准会话管理器——StandardManager

xiaoxiao2021-02-28  101

转自:http://blog.csdn.net/wangyangzhizhou/article/details/48225517

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

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

 

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

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

最后是关于持久化模块和会话集的维护,由于标准会话定位于提供一个简单便捷的管理器,所以持久化和重加载操作并不会太灵活且扩展性弱,tomcat会在每个StandardContextweb应用)停止时调用管理器将属于此web应用的所有会话持久化到磁盘,文件名为SESSIONS.ser,而目录路径则由server.xmlManager节点pathname指定或Javax.servlet.context.tempdir变量指定,默认存放路径为

转载请注明原文地址: https://www.6miu.com/read-32544.html

最新回复(0)