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 @ 2020-09-21 12:39  梦一样😊的人生  阅读(319)  评论(0)    收藏  举报