目录
1.生产事故记录
–1.1问题描述
–1.2问题分析
–1.3解决途径
–1.4结果
–1.5未验证疑问
2.参考
3.tomcat-session原理相关
–3.1听网易公开课的几个问题 - 有关Session 工作原理
—3.1.1 Tomcat 中 session 保存在哪?
—3.1.2 tomcat 怎么追踪请求属于哪个session?
—3.1.3 session是不是在用户登录时就产生了
—3.1.4 tomcat 默认并发数
1.生产事故记录
1.1问题描述
本次设计有web前端系统(public)及web管理端(manager)两个web用户系统,在同一个浏览器同时打开两个系统,先后登录,之后系统会丢失登录状态。
现象:同一个浏览器访问同一个服务器下的两个tomcat服务,会产生session覆盖的问题。
1.2问题分析
- 1.同一个浏览器,两个系统不同的窗口打开,按说不会互相影响;
- 2.搜索得知在不同窗口,即使是同一个浏览器也不会互相影响,但在devTools(Application-Storage-Cookies-xxxdomain)中,查看会话的确被重置了;
1.3解决途径
一个服务器搭多个tomcat导致session丢失,或者同一个IP不同端口,多个应用的session会冲突解决方法。
解决方法:
- 1.不同项目使用不同的服务器
不多赘述
- 2.指定不同的tomcat的cookie名称
修改coocie的名称保证cookie不重复,即jsessionid的不重称,保证ip相同下sessioncookiename域名不同。
具体修改配置tomcat/conf/server.xml,在Host标签下Context容器,如下
1 | <Host> |
- docBase: webapps/下存放代码的文件夹名称
1.4结果
在按照以上方法修改,重启服务之后,问题得到解决。
1.5未验证疑问
- 1.将
ip:port
换成域名,是否能解决此问题
2.参考
3.tomcat-session原理相关
3.1听网易公开课的几个问题 - 有关Session 工作原理
3.1.1 Tomcat 中 session 保存在哪?
tomcat 本地的ConcurrentHashMap中(本地缓存),以sessionid为key
3.1.2 tomcat 怎么追踪请求属于哪个session?
通过cookie:产生会话时向浏览器发送存有sessionid的cookie,后续请求都带上这个cookie
3.1.3 session是不是在用户登录时就产生了
不是,会话是用来跟踪多个请求的,登录只是明确会话的主人是谁(把用户信息存放到session中)
3.1.4 tomcat 默认并发数
maxThreads 可配置
- 本文作者: Linking
- 本文链接: https://linking.fun/2019/07/30/同一个IP(服务器)多个Tomcat产生session覆盖问题记录/
- 版权声明: 版权所有,转载请注明出处!