Tomcat:在数据库中存储会话

Fab*_*abe 8 java replication tomcat servlets jdbc

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

非常感谢Fabian

Boz*_*zho 7

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

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

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

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

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