首页 > 解决方案 > Tomcat 在会话故障转移事件期间注销用户并重新启动

问题描述

我们已经使用 Redisson 实现了会话复制,但我们注意到,如果我们故意让一个节点失败,用户的会话确实会被复制,但是当它们在新服务器上恢复时它们会被注销。

这个答案在这里:在tomcat 7重新启动后恢复用户登录暗示使用JAASRealm将允许某人在重新启动后保持登录状态。

为了测试这一点,我使用属性登录模块在 Tomcat 中成功设置了 JAAS 领域。但是,当我重新启动时,用户会被注销。我确实看到我的会话被 tomcat 在它的工作目录中写入磁盘。

有没有办法让它正常工作,这样用户就不会在故障转移事件期间被注销?更重要的是,这是否有技术或安全原因?

如果您查看 Tomcat 代码,他们会积极尝试避免序列化 Principal:

https://github.com/apache/tomcat/blob/master/java/org/apache/catalina/session/StandardSession.java#L1559

https://github.com/apache/tomcat/blob/master/java/org/apache/catalina/session/StandardSession.java#L234

标签: javatomcatapache-tomeesession-replication

解决方案


推荐阅读