Tomcat(此处为版本 5)将 session 信息存储在内存中。集群时,此信息会定期广播到集群中的其他服务器以保持同步。您可以使用数据库存储来使 session 持久化,但此信息也只是定期写入,并且仅真正用于故障恢复,而不是实际替换内存中的 session 。
如果您不想使用粘性 session (不幸的是我们的配置不允许这样做),这会引发 session 不同步的问题。
在其他语言中,网络框架往往允许您使用数据库作为主要 session 存储。虽然这引入了潜在的缩放问题,但它确实使 session 管理非常简单。我想知道是否有办法让 tomcat 以这种方式使用数据库进行 session (从技术上讲,这也不需要在 tomcat server.xml 中进行任何集群配置)。
最佳答案
绝对有办法。虽然我强烈支持粘性 session - 为您的服务器/数据库节省了很多负载(除非出现故障)...
http://tomcat.apache.org/tomcat-5.5-doc/config/manager.html有关于 Tomcat 的 SessionManager 配置和设置的信息。根据您的具体要求,您可能必须实现自己的 session 管理器,但这个起点应该会提供一些帮助。
关于java - 有没有办法用 Tomcat 指定不同的 session 存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/82340/