同IP不同端口Session冲突问题
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
??一個服務器上搭建了多個tomcat或者weblogic,端口不一樣,同時啟動訪問時session丟失。如:A,B兩個服務,在瀏覽器中登錄訪問A后,當前打開的瀏覽器上在開一個選項卡訪問B服務后,回過來點擊訪問A時session丟失,需要重新登錄A才可以訪問。經(jīng)過資料查找,發(fā)現(xiàn)問題是因為:IP相同認為是同一個域,接收了B的set-cookie指令,把對應的cookie內(nèi)容覆蓋了,其中包括jsessionid,造成A的session丟失。 如果IP不同,則不會發(fā)生這個問題。IP相同的兩個session對應的cookie是一樣的,而不幸的是sessionID就保存在cookie中,這樣先訪問A,再訪問B的時候,B的sessionid會覆蓋A的sessionid。這個事情沒辦法解決,所以你不要搞兩個端口,最好是搞兩個IP。原來都是cookie惹的禍,它不會區(qū)分端口,造成這多個站點不斷的后來的覆蓋前面的,從而造成session的丟失。
??????? 解決方法:
方法1:將不同的多個應用服務在不同的虛擬主機中,或者映射不同的IP進行部署。
方法2:對應tomcat服務處理方式:修改coocie的名稱保證cookie不重復,即jsessionid的不重稱,保證ip相同下sessioncookiename域名不同。
???????????1、tomcat5修改方法
在啟動項中增加org.apache.catalina.SESSION_COOKIE_NAME參數(shù)
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增加參數(shù)對所有Context生效,影響甚大,所以到以后的版本可以就僅針對Context設置了
??????? 在Context容器標簽上增加sessionCookieName參數(shù)
<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>??
http://blog.csdn.net/isshquery/article/details/8493231
http://blog.163.com/wendy_xiaoyue/blog/static/19040105120111114105829574/
轉(zhuǎn)載于:https://my.oschina.net/psuyun/blog/520224
總結(jié)
以上是生活随笔為你收集整理的同IP不同端口Session冲突问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法与数据结构之队列的链式存储
- 下一篇: 雅虎复兴无望,梅耶尔或离职