Tomcat:在数据库中存储会话

我正在寻找一种避免内存会话复制/群集的方法,并将会话存储在数据库中。 此时使用Tomcat的JDBCStore是无用的,因为它只在数据库中存储非活动会话以保存服务器内存。 有什么建议么?

非常感谢Fabian

如果您不想以应该使用的方式使用会话,那么根本不要使用它 – 开发自己的会话对象。 它仍然可以实现HttpSession ,甚至可以从HttpSession的实现扩展。

您可以使用Filter来包装您的请求,以便它返回您的会话对象而不是标准对象。 在您的会话中,您可以将内容存储在DB而不是内存中。

您可以使用Hazelcast而不是写入数据库 – 它提供分布式集合。 但我想这将花费与配置会话复制相同的工作量。 并且会话复制并不困难 – 所有容器都支持它。

这些都是粗略的指导方针,任务不会是微不足道的。 我建议坚持使用标准会话使用模式,并且只在真正需要时才将内容存储在数据库中。

为了避免复制的需要,您可以尝试使用粘性会话 – 即,当负载均衡器将用户定向到服务器时,该用户的每个后续请求都将发送到同一服务器。

您可能希望查看此项目 ,我更愿意在memcached中而不是在DB中存储会话。

在我看来,我自己无法实现JDBC会话管理器,但感谢您的答案和时间 – Hazelcast需要仔细观察,对我来说似乎非常强大。 我会做类似J. Brisbin的事情: http : //jbrisbin.com/web2/articles/tomcat-session-manager-backed-by-riak/