解决使用tomcat-redis-session-manager httpSessionLinster监听功能失效问题

使用tomcat-redis-session-manager做session redis化有一个坑就是,代码tomcat-redis-session-manager本身对session的生命周期控制使用了redis的exprie看看代码。。

RedisSessionManager...


tomcat对session的守护线程会行上面方法对过期session进行清理,然而RedisSessionManager并没有这个操作。。所以HttpSessionLinster是监听不到session过期销毁动作的!

解决起来很简单。。注释掉上面这个方法,让其走父类processExpires();

同事要在add方法中加入标红这段代码,将sessions看下源码就知道是啥了。。就是一个线程安全的sessionmap,守护线程会定期扫描这个map里的session。使用exprie()方法清理过期session。exprie动作会被sessionLinster监听到


RedisSession 添加add方法


对session这块底层代码的理解有几个帖子写的比较接近底层,感谢大神:

测试已经可用。如果后续有什么问题会继续更新,希望大家多多指点

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值