java - 在多服务器环境中管理 session

标签 java session tomcat

假设我有多个 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/

相关文章:

java - 当 Tomcat 作为 Windows 服务启动时,其他计算机无法使用 Tomcat 应用程序

java - 如何在java中从周数、年和dayOfWeek获取日期?

java - 找到后如何获取扫描仪中的位置?

multithreading - 在 ColdFusion 中,为什么 Set & Forget 子线程不能访问 session /客户端范围?

java - Spring MVC - 检查 session 是否存在

java - 在速度模板中添加 css 类

java - 非法参数异常 : argument type mismatch in Hibernate

java - 如何在 Java 中重新实现 sin() 方法? (使结果接近 Math.sin() )

node.js - MongoDB:在集合上设置 TTL 索引时出错: session

apache - 如何将 Tomcat 6 库管理到 %TOMCAT_HOME%/lib 下的子文件夹中?