假设我有多个 web 应用程序服务器在运行,我正在从 Server1 登录一个用户,因此他的 session 开始。由于 http 是无状态的,假设下一个请求去往 Server3 而不是用于登录到的 Sever1应用程序,如果我使用 cookies,隐藏形式,它不会在 Server2 中工作。
那么我该如何管理 session ?可能是通过生成一个 ID(或者甚至重用生成的 jsessioid)并将其存储在中央数据库中,以便所有服务器都可以访问此 session ID 并在处理请求之前对其进行验证。那么在那种情况下,我需要开发一种机制来将所有 session 数据作为对象存储到数据库中。
是否有任何其他可用的内置机制?
最佳答案
如果您在多台服务器上部署应用程序,您应该使用“集群”。应用程序服务器能够使用“ session 复制”来处理这种情况。通过 session 复制,每台服务器都将拥有 Activity 用户 session 的副本。如果第一个请求发送到服务器 A,第二个请求发送到服务器 B,那么这对应用程序代码和最终用户都是透明的。
对于 Tomcat 中的集群/ session 复制,您可以查看 this链接。
关于java - 在多服务器环境中管理 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12891569/