博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
同IP不同端口Session冲突问题
阅读量:4708 次
发布时间:2019-06-10

本文共 1240 字,大约阅读时间需要 4 分钟。

分类: 

     一个服务器上搭建了多个tomcat或者weblogic,端口不一样,同时启动访问时session丢失。如:A,B两个服务,在浏览器中登录访问A后,当前打开的浏览器上在开一个选项卡访问B服务后,回过来点击访问A时session丢失,需要重新登录A才可以访问。经过资料查找,发现问题是因为:IP相同认为是同一个域,接收了B的set-cookie指令,把对应的cookie内容覆盖了,其中包括jsessionid,造成A的session丢失。 如果IP不同,则不会发生这个问题。IP相同的两个session对应的cookie是一样的,而不幸的是sessionID就保存在cookie中,这样先访问A,再访问B的时候,B的sessionid会覆盖A的sessionid。这个事情没办法解决,所以你不要搞两个端口,最好是搞两个IP。原来都是cookie惹的祸,它不会区分端口,造成这多个站点不断的后来的覆盖前面的,从而造成session的丢失。

        解决方法:

方法1:将不同的多个应用服务在不同的虚拟主机中,或者映射不同的IP进行部署。

方法2:对应tomcat服务处理方式:修改coocie的名称保证cookie不重复,即jsessionid的不重称,保证ip相同下sessioncookiename域名不同。

           1、tomcat5修改方法

在启动项中增加org.apache.catalina.SESSION_COOKIE_NAME参数

linux

JAVA_OPTS=’-Dorg.apache.catalina.SESSION_COOKIE_NAME=yousessionname‘

win

set JAVA_OPTS=”-Dorg.apache.catalina.SESSION_COOKIE_NAME=yousessionname“

           2、tomcat6和tomcat7修改方法相同

       tomcat增加参数对所有Context生效,影响甚大,所以到以后的版本可以就仅针对Context设置了

        在Context容器标签上增加sessionCookieName参数

<Context path=”/” docBase=”webapp” reloadable=”false”sessionCookieName=”yoursessionname”></Context>

          3、weblogic修改方法

          设置各个应用使用不同的cookie-name。

         weblogic的设置(设置不同的cookie-name):

         请在WEB-INF\Weblogic.xml添加如下代码
                  <session-descriptor>       
                             <cookie-name>JSESSIONID1</cookie-name>   
                  </session-descriptor>  

 

转载于:https://www.cnblogs.com/u0mo5/p/4475968.html

你可能感兴趣的文章
算法入门经典第六章 例题6-9 天平
查看>>
extern的用法
查看>>
页面制作之开发工具
查看>>
Source Code Structure - Python 源码目录结构
查看>>
Mac使用Aria2下载百度网盘,突破下载限速的方法教程
查看>>
Python字符串操作
查看>>
loadrunner获取当前日期、明日日期、昨日日期
查看>>
网络资料大汇
查看>>
源码分析之AsyncTask
查看>>
C#查询XML解决“需要命名空间管理器”问题
查看>>
C语言-一个fopen函数中未使用二进制模式(b)引发的血案
查看>>
CGI FastCGI PHP-CGI PHP-FRM
查看>>
记录一个glibc 导致的段错误以及gdb 移植
查看>>
pthread_create用法(转)
查看>>
ffmpeg源码分析二:main函数和transcode函数 (转2)
查看>>
How to load helpers in model class
查看>>
Zabbix-2.4-安装-2
查看>>
spotlight工具监控oracle
查看>>
数据集成工具:Teiid实践
查看>>
寒假集训【1.28】
查看>>