用于保存状态的会话对象已经有了,现在就需要一个管理器来管理所有会话,例如会话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会话功能的把握,同时对后面其他会话管理器的理解也更容易。

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

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

    前面提到的标准会话管理器已经提供了基础的会话管理功能,但在持久化方面做得还是不够,或者说在某些情景下无法满足要求,例如把会话以文件或数据库形式存储到存储介质中,这些都是标准会话管理器无法做到的,于是另 ...

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

    DeltaManager会话管理器是tomcat默认的集群会话管理器,它主要用于集群中各个节点之间会话状态的同步维护,由于相关内容涉及到集群,可能会需要一些集群通信相关知识,如果有疑问可结合集群相关章 ...

  3. xshell 会话管理器快捷键

    有没有发现xshell6关闭左边的会话管理器以后,打开就比较麻烦 那么可以自定义一个快捷键来打开: 然后输入一个快捷键 类型选择 菜单-->然后找会话管理器 完事儿 也可以自定义其他快捷键.自己 ...

  4. Shiro会话管理器与验证码实现(十四)

    和shiro整合后,使用shiro的session管理,shiro提供sessionDao操作 会话数据. 配置sessionManager

  5. PHP中SESSION自定义会话管理器

    <?php class CustomSession implements SessionHandlerInterface{ private $link; private $lifetime; p ...

  6. SAP轻松访问会话管理器等设置

    对于SAP的登陆后初始界面,是有一个配置表,可以进行设置的,例如隐藏SAP的标准菜单,设置轻松访问页面右边的图片内容等等这一切的设置都可以通过维护SSM_CUST表来实现可以通过SM30来维护内容,该 ...

  7. linux启动黑屏或无法进入会话管理器

    原因是因为更新软件时删除了/etc中的xserver配置文件,进入livecd将相关文件拷贝即可

  8. Xshell6会话管理器无意中关闭,在哪里打开

    一.进入查看 二.勾选则弹出,然后双击窗口即可

  9. [Ubuntu] LightDM 轻量级桌面显示管理器

    LightDM(Light Display Manager)是一个全新的轻量级 Linux 桌面显示管理器,而传统的 Ubuntu 是使用 GNOME 桌面标准的 GDM. LightDM 是一个跨桌 ...

随机推荐

  1. springMVC源码分析--HandlerMethod

    在之前的博客中我们已经接触过HandlerMethod,接下来我们简单介绍一下HandlerMethod,简单来说HandlerMethod包含的信息包括类.方法和参数的一个信息类,通过其两个构造函数 ...

  2. JVM远程DEBUG(JPDA )

    原理 1. JPDA简介 JPDA(Java Platform Debugger Architecture)为Java平台上的调试器定义了一个标准的体系结构.该体系结构包括3个主要组成部分:JVM T ...

  3. 错误问题:OpenGL version to old,GLViewinitWithRect(const stdbasic_stringchar,stdchar_traitschar,stdalloca

     1电脑装成Linux之后,在Linux里面装虚拟机运行cocos2d-x-3.2时报如下错误: plan3d.exe!cocos2d::GLView::initWithRect(const st ...

  4. Linux telnet远程登录操作

    telnet  (如果不行 可以却换root帐户试试 su - root) 1.安装telnet-server     sudo dpkg -i xinetd_1%3a2.3.14-7ubuntu3_ ...

  5. Java基本语法-----java注释

    1注释的作用 通过注释提高程序的可读性,是java程序的条理更加清晰,易于区分代码行与注释行.另外通常在程序开头加入作者,时间,版本,要实现的功能等内容注释,方便后来的维护以及程序员的交流. 2注释的 ...

  6. Android设置item的行间距,以及去掉分割线方法

    1.设置item的行间距: 可以在xml布局文件中的listView下设置xml属性: android:divider="#00000000" android:dividerHei ...

  7. Android View框架总结(八)ViewGroup事件分发机制

    请尊重分享成果,转载请注明出处: http://blog.csdn.net/hejjunlin/article/details/52298780 上篇分析了View的事件分发流程,留了一个问题:如果上 ...

  8. iOS关于图片点到像素转换之杂谈

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 不管是以什么方法生成的图片,是从磁盘上读取的,还是从其他对象中 ...

  9. mac OS X 从无法同步互联网时间想到的

    最近在mac OS X 巨浪 :)上执行 ntpdate time.nist.gov 失败,提示 13 Jan 19:41:53 ntpdate[1374]: the NTP socket is in ...

  10. mapdb的一些性能测试

    jdk1.6,8g,64位,Intel Core i5-4210U CPU @ 1.70GHz 2.40GHz 使用memorydb 100个htreemap,每个htreemap对应50条线程操作, ...