【原创】大叔问题定位分享(35)spring中session失效时间
spring项目中将sessionid对应的cookie过期时间设置很长,但是实际session还是在半个小时后失效,跟了一下代码,spring中session实现接口为
org.springframework.session.SessionRepository
public interface SessionRepository<S extends Session> {
    S createSession();
    void save(S var1);
    S findById(String var1);
    void deleteById(String var1);
}
这个接口有两个实现类:
MapSessionRepository
RedisOperationsSessionRepository
单机环境使用前者,分布式环境使用后者,来看后者代码:
org.springframework.session.data.redis.RedisOperationsSessionRepository
    public RedisOperationsSessionRepository.RedisSession createSession() {
        RedisOperationsSessionRepository.RedisSession redisSession = new RedisOperationsSessionRepository.RedisSession();
        if(this.defaultMaxInactiveInterval != null) {
            redisSession.setMaxInactiveInterval(Duration.ofSeconds((long)this.defaultMaxInactiveInterval.intValue()));
        }
        return redisSession;
    }
org.springframework.session.data.redis.RedisOperationsSessionRepository.RedisSession
        RedisSession() {
            this(new MapSession());
            this.delta.put("creationTime", Long.valueOf(this.getCreationTime().toEpochMilli()));
            this.delta.put("maxInactiveInterval", Integer.valueOf((int)this.getMaxInactiveInterval().getSeconds()));
            this.delta.put("lastAccessedTime", Long.valueOf(this.getLastAccessedTime().toEpochMilli()));
            this.isNew = true;
            this.flushImmediateIfNecessary();
        }
        public boolean isExpired() {
            return this.cached.isExpired();
        }
org.springframework.session.MapSession
    public boolean isExpired() {
        return this.isExpired(Instant.now());
    }
    boolean isExpired(Instant now) {
        return this.maxInactiveInterval.isNegative()?false:now.minus(this.maxInactiveInterval).compareTo(this.lastAccessedTime) >= 0;
    }
可见是在创建session的时候设置两个时间,
lastAccessedTime
maxInactiveInterval
如果 当前时间 - maxInactiveInterval > lastAccessedTime 就会认为session过期,设置的方法:
@EnableRedisHttpSession(maxInactiveIntervalInSeconds=2000)
【原创】大叔问题定位分享(35)spring中session失效时间的更多相关文章
- 关于Flask-Login中session失效时间的处理
		最近需要使用Python开发web系统,主要用到的框架就是Flask,前端使用Jinja2模板引擎和Bootstrap,web容器使用Cherrypy,其中关于Login管理的使用了Flask-Log ... 
- 【原创】大叔问题定位分享(27)spark中rdd.cache
		spark 2.1.1 spark应用中有一些task非常慢,持续10个小时,有一个task日志如下: 2019-01-24 21:38:56,024 [dispatcher-event-loop-2 ... 
- 【原创】大叔问题定位分享(11)Spark中对大表子查询加limit为什么会报Broadcast超时错误
		当两个表需要join时,如果一个是大表,一个是小表,正常的map-reduce流程需要shuffle,这会导致大表数据在节点间网络传输,常见的优化方式是将小表读到内存中并广播到大表处理,避免shuff ... 
- 【原创】大叔问题定位分享(7)Spark任务中Job进度卡住不动
		Spark2.1.1 最近运行spark任务时会发现任务经常运行很久,具体job如下: Job Id ▾ Description Submitted Duration Stages: Succeed ... 
- 【原创】大叔问题定位分享(36)openresty(nginx+lua)中获取不到post数据,ngx.req.get_body_data返回nil
		openresty(nginx+lua)中获取不到post数据,ngx.req.get_body_data返回nil This function returns nil if the request ... 
- 【原创】大叔问题定位分享(34)Spring的RestTemplate请求json数据后内容被修改
		先看代码 org.springframework.web.client.RestTemplate public RestTemplate() { this.messageConverters = ne ... 
- 【原创】大叔问题定位分享(3)Kafka集群broker进程逐个报错退出
		kafka0.8.1 一 问题现象 生产环境kafka服务器134.135.136分别在10月11号.10月13号挂掉: 134日志 [2014-10-13 16:45:41,902] FATAL [ ... 
- 【原创】大叔问题定位分享(28)openssh升级到7.4之后ssh跳转异常
		服务器集群之间忽然ssh跳转不通 # ssh 192.168.0.1The authenticity of host '192.168.0.1 (192.168.0.1)' can't be esta ... 
- 【原创】大叔问题定位分享(6)Dubbo monitor服务iowait高,负载高
		一 问题 Dubbo monitor所在服务器状态异常,iowait一直很高,load也一直很高,监控如下: iowait如图: load如图: 二 分析 通过iotop命令可以查看当前系统中磁盘io ... 
随机推荐
- php屏蔽电话号码中间四位
			php屏蔽电话号码中间四位 一.总结 一句话总结: 直接就是substr_replace函数:$str = substr_replace("13966778888",'****', ... 
- antd源码分析之——标签页(tabs 3.Tabs的滚动效果)
			由于ant Tabs组件结构较复杂,共分三部分叙述,本文为目录中第三部分(高亮) 目录 一.组件结构 antd代码结构 rc-ant代码结构 1.组件树状结构 2.Context使用说明 3.rc-t ... 
- 阿里云 docker image 加速
			使用的国内网络下载docker image太困难了,简直龟速,于是上网查看如何加速docker image的下载,没想到网上还真有,看来现在自己的知识圈子太小了,还需要多接触新的知识.找到第一个atu ... 
- [MyBatis]再次向MySql一张表插入一千万条数据 批量插入 用时5m24s
			本例代码下载:https://files.cnblogs.com/files/xiandedanteng/InsertMillionComparison20191012.rar 环境依然和原来一样. ... 
- Mac下mysql服务端密码重置及环境配置
			一 停止mysql服务 关闭MySQL服务的操作: 苹果->系统偏好设置->最下边点MySQL 在弹出页面中 关闭mysql服务(点击stop mysql server) 二 进入终端,命 ... 
- gitlib的安装
			下载ruby yum -y install gcc gcc-c++ make wget https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.9.tar. ... 
- easyUI之window窗口
			<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ... 
- 前端需要掌握的Babel知识
			Babel 是怎么工作的 Babel 是一个 JavaScript 编译器. 做与不做 注意很重要的一点就是,Babel 只是转译新标准引入的语法,比如: 箭头函数 let / const 解构 哪些 ... 
- Python实现计算圆周率π的值到任意位的方法示例
			Python实现计算圆周率π的值到任意位的方法示例 本文实例讲述了Python实现计算圆周率π的值到任意位的方法.分享给大家供大家参考,具体如下: 一.需求分析 输入想要计算到小数点后的位数,计算圆周 ... 
- dtcms  手机浏览
			private string GetSitePath(string webPath, string requestPath, string requestDomain) { //获取当前域名包含的站点 ... 
