同一台server部署多个tomcat,每个tomcat里部署了同一个app作为不同的环境,在同一个浏览器同事访问不同环境的时候,session会混乱如下 :
server1 登录>产生session ID>回传给客户端浏览器 > 客户端进行接下来的操作,request默认会加上JSESSIONID,就是回传的session ID, tomcat根据request里的session ID判断要不要新建session(没有或者失效->新建;有且有效->继续操作)
server2 登录>产生session ID>回传给客户端浏览器> 客户端进行接下来的操作,request默认会加上JSESSIONID,就是回传的session ID, tomcat根据request里的session ID判断要不要新建session(没有或者失效->新建;有且有效->继续操作)
返回server1 环境 > 访问任何一个功能,request默认加上的JSESSIONID会变成server2的JSESSIONID> server1的tomcat不识别该session ID,新建一个session ID并回传,用户已登录的session丢失,如果后台app程序需要读取其中信息的话有可能报错
放回server2 环境 > 访问任何一个功能,request默认加上的JSESSSIONID会变成server1的JSESSIONID > server 2的tomcat不识别改session ID, 新建一个session ID并回传,用户已登录的session丢失...
循环...
解决办法:
在每一个tomcat里面 /CATALINA_HOME/conf/context.xml中加入以下属性: <Context sessionCookieName="session_env" />,env根据环境不同而不同,如session_dev,session_demo等,重启;再访问的时候,后台产生的session ID就回存放在session_env变量里,而不是JSESSIOID里 ;根本原因也是因为JSESSIONID在同一个浏览器里是唯一的,多个环境会共享,导致传到后台不一致。
分享到:
相关推荐
一个服务器上搭建了多个tomcat或者weblogic,端口不一样,同时启动访问时session丢失。如:A,B两个服务,在浏览器中登录访问A后,当前打开的浏览器上在开一个选项卡访问B服务后,回过来点击访问A时session丢失,...
tomcat修改sessionId,同一台服务器部署多个tomcat需要修改sessionId,否则会出现session冲突的问题
另一个文件“tomcat7-redis-session”可能是专门为Tomcat7和Redis集成的Session共享解决方案,可能包含了一些配置示例、jar包或其他相关资源。 实现Nginx、Tomcat7和Redis的Session共享,主要步骤如下: 1. 安装...
【标题】:“Tomcat Redis Session”指的是在Tomcat集群环境中,通过Redis来实现Session的共享与同步,以解决集群中的Session一致性问题。 【描述】:“Tomcat集群Nginx使用Redis保证Session同步”这一场景中,通常...
然而,当多个Tomcat实例组成一个集群时,session(用户会话)共享成为一个挑战,因为每个实例都有自己的内存空间,无法直接访问其他实例中的session数据。本篇文章将深入探讨Tomcat集群中session共享的解决方案,...
Tomcat作为一款广泛使用的Java应用服务器及Servlet容器,提供了多种方式来设定Session的有效时长。这有助于开发者根据具体业务需求灵活调整Session的生命周期。本文将详细介绍如何通过三种不同的方法来设定Tomcat中...
在这种情况下,如何实现用户登录状态(即session)在多个服务器间的共享就成为一个重要的问题。"nginx+tomcat shiro实现多tomcat下session共享"这一主题,就是探讨在这样的架构中,如何有效管理和共享session。 1. ...
以下是一个详细的步骤来实现Tomcat7+Redis的Session共享: 1. **安装和配置Redis**:首先,需要在所有Tomcat服务器和Nginx服务器上安装Redis服务,并确保它们可以正常运行和通信。 2. **配置Tomcat**: - 修改`$...
在Tomcat中集成memcached作为Session管理器,可以将Session数据分布在网络中的多个节点上,实现Session复制和高可用性。 为了在Tomcat中使用memcached进行Session管理,你需要以下关键的依赖jar包: 1. **...
当一个 Session 开始时,Servlet 容器会创建一个 HttpSession 对象。在某些情况下,把这些 HttpSession 对象从内存中转移到文件系统中或数据库中,需要访问的时候再把它们载入到内存中来。这样做的好处有两点:节约...
在分布式系统中,session共享是一个重要的问题,因为用户在访问不同的服务器节点时,需要保持登录状态和其他会话信息的一致性。Memcached作为一个高性能的分布式内存对象缓存系统,常被用来解决这个问题。 描述中...
在IT行业中,尤其是在Web应用开发领域,服务器集群和session共享是一个关键问题。当多个服务器共同处理用户请求时,保持用户会话(session)的一致性是必要的,以确保用户在不同服务器之间切换时不会丢失登录状态或...
在构建分布式系统时,Session共享是一个关键问题,特别是在使用Linux上的Tomcat服务器集群与Nginx作为反向代理的情况。标题“tomcat-session共享”和描述中提到的问题,主要是指如何在多台Tomcat服务器之间以及通过...
在IT行业中,Tomcat是一个广泛使用的开源Java Servlet容器,它实现了Java EE的Web应用程序规范。在部署高可用性、高并发性的应用时,通常会构建Tomcat集群来提高服务的可扩展性和容错性。然而,当涉及到用户状态管理...
`SimpleTcpCluster` 是一个基于 TCP 的集群实现,而 `DeltaManager` 是用于处理 Session 数据更新的管理器。主要配置包括: - `tcpListenAddress`:指定接收复制数据的 IP 地址,例如 `192.168.1.55`。 - `...
在分布式系统中,Session共享是一个常见的挑战,尤其是在多个应用服务器之间。`Redis`作为一个高性能的键值存储系统,常被用作Session缓存,以实现跨服务器的Session共享。本主题将深入探讨如何在`Tomcat7`中利用`...
对于描述中提到的“版本为1.8”,这可能是指Tomcat的版本,因为Tomcat 1.8是较早的一个版本,支持session的外部化存储。 配置Tomcat session到Memcache涉及以下几个关键步骤: 1. **安装Memcache**:首先,你需要...
标题中的“memcached实现多个tomcat共享一个session”是指在分布式系统中,通过使用memcached作为session存储介质,实现多台Tomcat服务器之间的session共享。这样可以确保用户在集群中的任意一台服务器上登录后,其...
Memcached-Session-Manager是解决这个问题的一个优秀解决方案,它允许我们将用户的Session数据存储在内存缓存系统——Memcached中,从而实现跨Tomcat实例的Session共享。下面将详细介绍Memcached-Session-Manager的...