从书Head First Servlets and JSP, Second Edition
P257
但是每个给定的会话ID只有一个HttpSession对象 网络应用程序,无论应用程序分布了多少个虚拟机。
然而来自tomcat文档:Clustering/Session Replication HOW-TO 它确实说会话可以在多个vms中复制:
群集已启动并将建立成员资格 (TomcatA,TomcatB)。 TomcatB现在将从a请求会话状态 集群中已存在的服务器,在本例中为TomcatA。 TomcatA响应请求,并在TomcatB开始侦听之前响应 对于HTTP请求,状态已从TomcatA转移到 TomcatB。
我不知道如何理解这一点。
答案 0 :(得分:3)
只有HttpSession
的状态(基本上是所有可序列化的内容)被复制才能在集群中的服务器之间保持同步,而不是对象实例本身。每个单独的服务器仍然只有一个HttpSession
对象实例与每个客户端 - 服务器会话的会话ID相关联。