【发布时间】:2019-10-16 19:17:24
【问题描述】:
我在 Ubuntu16.04 中使用 tomcat7 和 oracle-java8。
我启动了 2 个不同的 tomcat 实例进行负载平衡,但默认行为是会话不能在它们之间共享。
所以我转向了在其中使用 RedisSessionManager 的解决方案。
在 tomcat conf/context.xml 文件中添加以下行后(当然我确实在 lib 目录中添加了依赖 jar):
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="127.0.0.1"
port="6379"
database="0"
password="defuRedis2017"
maxInactiveInterval="60" />
然后启动单个 tomcat 实例。
但在那之后,服务器似乎无法再保存会话,并且在每个请求中返回不同的 Set-Cookie 标头,因此即使使用单个 tomcat 实例也无法登录。
如果我注释掉以上行(在context.xml 文件中),会话将按预期工作。
那么使用RedisSesssionManager 有什么问题呢?
【问题讨论】:
标签: java session tomcat redis persistence