• -W.LI-
    2019-07-23
    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

    
     12
  • 永钱
    2019-07-23
    Tcp是系统网络层面的,而session是应用层面的,应用层面完全由应用控制生命周期,他们之间没什么关系。不知道理解对不对,求指正

    作者回复: 对的

    
     5
  • 发条橙子 。
    2019-07-24
    老师 我有个其他的疑问,一般我们用tomcat起java程序的时候都用的jvm的默认参数,那如果我想更改一些jvm参数 ,应该在tomcat哪里配置

    作者回复: 在bin目录下新建一个setenv.sh的文件,在这个文件里加jvm参数

    
     3
  • L.B.Q.Y
    2019-09-18
    StandardManager持有的sessions这个ConcurrentHashMap,其Key是sessionId对吧,这个sessionId是通过cookie送进来的是吗?如此,同一个主机上发送来的请求就能和指定的session关联在一起。

    作者回复: 对的

    
     1
  • magicnum
    2019-07-23
    一个是传输层连接的断开时间,另一个是应用层用户会话的过期时间,两者没啥关系,但是超时目的其实都是为了减少服务器资源占用
    
     1
  • 旅途
    2020-01-19
    老师,创建session的时候,先用context过去的manager,然后session.setId的时候,又用manager获取的context,来过去listener,这是为什么
     1
    
  • Geek_rebel
    2019-12-10
    对Request对象进行包装,这种操作是用的装饰者模式吗?
    
    
  • Mr.差不多
    2019-12-03
    我想请教一下,就是在tomcat中session的过期时间是什么时候重置的? 是在下一次获取到这个session中的数据的时候?还是随便向后台发送个请求就可以?
    
    
  • Geek_00d567
    2019-09-17
    tcp 是传输层协议,连接过期,需要重新三次握手。Session,是服务端的凭证,过期,表示会话过期,需要重新连接。此时tcp可能未过期。
    
    
  • 听雨
    2019-08-14
    HttpSessionEvent event = new HttpSessionEvent(getSession());
    没太明白HttpSessionEvent 的作用是什么

    作者回复: Event只是一个“事件”类,万物皆对象

    
    
  • 梁中华
    2019-07-24
    不谈下分布式session在tomcat中的实现吗?比如多个tomcat实例如何共享session?

    作者回复: 下篇会讲这个

    
    
  • 小飞
    2019-07-23
    其实在StandardManager 中没有 backgroundProcess()和 processExpires()的具体实现的。他们的实现提取到了基类ManagerBase中
    
    
  • WL
    2019-07-23
    老师请问一下如果是集群部署的Tomcat容器怎么实现分布式的session,还能有standardManager管理吗?我看有filestore和jdbcstore两个类,但是感觉靠这两个类好像也没法实现,请老师指点一下具体怎么集群情况下的session管理

    作者回复: 下篇会讲到

    
    
我们在线,来聊聊吧