如何基于用户数据的一些哈希生成自定义JSESSIONID以便复制会话

是否可以覆盖Tomcat的JSESSIONID嵌入式生成器,以便能够根据用户的登录名创建此cookie的自定义值?

为什么我需要这个:我有一个带有“粘性会话”的负载均衡器,配置为使用相同的JSESSIONID将请求路由到同一个服务器,我想防止情况,当同一个用户可以在不同的服务器上启动两个不同的会话时。

PS:这一切都与Amazon EC2有关

有一种更好的方法: 请参阅集群中会话复制的tomcat手册

您可以通过定义自己的自定义会话管理器来实现,

http://tomcat.apache.org/tomcat-5.5-doc/config/manager.html

但是,它可能不适用于您的用例。 在用户登录之前您不知道用户名,但需要为登录创建会话。

我认为推动后端会话是最好的方法。 您可以使用随Tomcat一起分发的JDBCStore会话管理器。 您还可以找到memecached的实现。

如果多个服务器的目的是为了冗余,您也可以使用群集,但如果您的目标是扩展负载,则无法帮助您。