解决两台tomcat服务器之间的session共享问题

为了解决两个tomcat之间的session共享,我们采用将session存入redis中,而这一操作实际上就是序列化和反序列化。在解决这个问题后,发现了一个新的问题,上代码:

红框里的判断,在用了redis存储后返回的是false,如果不用redis存储,则是true,发现这个问题也是因为sit环境和uat环境不一致,sit环境部署了两台tomcat,所以需要做session共享。

原因:captcha.getAvail()和Constant.TO_SECOND_STEP都是返回Integer的,对于Integer和Integer比较,在Integer的值处于-128~127的范围时,两个Integer的对象之间用==、!=比较都是没问题的,因为在jdk1.5之后jvm把这个范围内的数字缓存起来了,用于性能的提升和节省内存,所以这个范围自动拆装箱,但是我们通过new Integer(1)的方法则不会从缓存中取出,所以这里猜测,如果用了redis存储的话,对 对象的反序列化可能不是从缓存中去取的,所以导致captcha.getAvail()的值的地址与之前不同,也就造成了这样现象。这个想法需要验证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值