SpringBoot+分布式session共享打成war包的方式部署

        最近有一个SpringBoot项目上线,打成war包的方式部署在四台服务器中,发现一登录成功,就会闪退,原来是登录请求可能在第一台服务器,查询列表在第二台服务器,导致sessionid发生了改变,然后就想起了以前面试的时候老是提起的session共享问题,下面就将我解决这个问题的思路跟大家分享一下:

        首先解释一下我们的项目为什么会 发生闪退:首先我们将用户的登录信息保存到redis中,然后key是根据sessionid来做key值,session是保存在服务器端的,在你请求A服务器的时候会给你生成一个session,然后你继续访问B服务器,这是B服务器并没有保存你的session,它就会给你创建一个session,这样就会在本次会话中重新set-cookie(修改sesionid),导致用户访问失败。

  我们使用的是spring- session-redis的方式:

       1、首先导入依赖的jar包

  2、配置文件

 

 

   在2.0以上的版本中,JedisConnectionFactory的方法已经过期,就不使用这种了

 

  3、关闭redis的自动配置

   需要加一下这个不然也会报  'CONFIG'问题

 

备注:遇到的错误问题解决

1、redis报错

 在我们的本地是可以测试成功的,云上的redis就不行,需要设置:notify-keyspace-events,值为 Egx 这样就不报错了

 

2、tomcat启动报上下文加载错误的问题

 

 解决办法:不使用这种方式,直接在SessionConfig类上面加上@Configuration注解

 

posted @   梦一样😊的人生  阅读(306)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示