32 | Manager组件:Tomcat的Session管理机制解析
该思维导图由 AI 生成,仅供参考
Session 的创建
- 深入了解
- 翻译
- 解释
- 总结
Tomcat的Session管理机制是Web容器完成的,主要包括Session的创建、清理和事件通知。通过Request对象的getSession方法可以获取Session,并通过Session对象读取和写入属性值。Tomcat中由每个Context容器内的一个Manager对象来管理Session,默认实现类为StandardManager。Session的创建由Manager组件完成,创建后会被保存到ConcurrentHashMap中。Session的清理由Tomcat后台线程调用的backgroundProcess方法完成,每60秒执行一次。在Session的生命周期过程中,Tomcat会通知监听者,通过HttpSessionListener接口实现事件通知。文章详细介绍了Tomcat的Session管理机制,帮助读者更好地理解Spring Session的设计原理。
《深入拆解 Tomcat & Jetty 》,新⼈⾸单¥68
全部留言(14)
- 最新
- 精选
- -W.LI-session是会话的生命周期,每次请求都会重置超时时间,TCP链接超时,链接就被回收了(节约资源),如果session没失效可以从新创建TCP链接通过sessionId找到之前的会话。sessionId存在cookie里面,通过http协议的head头传过来。 老师好,感觉设计模式大多的作用就是,解耦,复用,提高系统的简装性,灵活性,还有别的作用么? 有个问题,之前听隔壁班的老师说,在数据量大的时候ConcurrentSkipMap()juc下基于条表实现性能比ConcurrentHashMap性能好。可是Tomcat管理session还是用的ConcurentHashMap()。是不够多么,大概多少量级以后用跳表比较合适啊?谢谢老师
作者回复: 在4线程1.6万数据的条件下,ConcurrentHashMap 存取速度是ConcurrentSkipListMap 的4倍左右。 但ConcurrentSkipListMap有几个ConcurrentHashMap 不能比拟的优点: 1、ConcurrentSkipListMap 的key是有序的。 2、ConcurrentSkipListMap 支持更高的并发。ConcurrentSkipListMap 的存取时间是log(N),和线程数几乎无关。也就是说在数据量一定的情况下,并发的线程越多,ConcurrentSkipListMap越能体现出他的优势。 参见:http://www.java-forums.org/new-java/13840-hashmap-vs-skiplistmap.html
2019-07-2332 - 永钱Tcp是系统网络层面的,而session是应用层面的,应用层面完全由应用控制生命周期,他们之间没什么关系。不知道理解对不对,求指正
作者回复: 对的
2019-07-23215 - 发条橙子 。老师 我有个其他的疑问,一般我们用tomcat起java程序的时候都用的jvm的默认参数,那如果我想更改一些jvm参数 ,应该在tomcat哪里配置
作者回复: 在bin目录下新建一个setenv.sh的文件,在这个文件里加jvm参数
2019-07-2411 - L.B.Q.YStandardManager持有的sessions这个ConcurrentHashMap,其Key是sessionId对吧,这个sessionId是通过cookie送进来的是吗?如此,同一个主机上发送来的请求就能和指定的session关联在一起。
作者回复: 对的
2019-09-185 - 梁中华不谈下分布式session在tomcat中的实现吗?比如多个tomcat实例如何共享session?
作者回复: 下篇会讲这个
2019-07-242 - WL老师请问一下如果是集群部署的Tomcat容器怎么实现分布式的session,还能有standardManager管理吗?我看有filestore和jdbcstore两个类,但是感觉靠这两个类好像也没法实现,请老师指点一下具体怎么集群情况下的session管理
作者回复: 下篇会讲到
2019-07-231 - 学无涯HttpSessionEvent event = new HttpSessionEvent(getSession()); 没太明白HttpSessionEvent 的作用是什么
作者回复: Event只是一个“事件”类,万物皆对象
2019-08-14 - magicnum一个是传输层连接的断开时间,另一个是应用层用户会话的过期时间,两者没啥关系,但是超时目的其实都是为了减少服务器资源占用2019-07-234
- 完美世界tcp 是传输层协议,连接过期,需要重新三次握手。Session,是服务端的凭证,过期,表示会话过期,需要重新连接。此时tcp可能未过期。2019-09-171
- | ~浑蛋~请问一下,session的isValid状态由谁来维护2022-08-01归属地:广东