您好,登錄后才能下訂單哦!
這篇文章主要介紹“如何解決同IP不同端口Session沖突問題”,在日常操作中,相信很多人在如何解決同IP不同端口Session沖突問題問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何解決同IP不同端口Session沖突問題”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
一個服務器上搭建了多個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>
本人補充,此處如果是Tomcat7,是在conf/context.xml文件的<Context>標簽中加sessionCookieName=”yoursessionname”,親測有效。
3、weblogic修改方法
設置各個應用使用不同的cookie-name。
weblogic的設置(設置不同的cookie-name):
請在WEB-INF\Weblogic.xml添加如下代碼
<session-descriptor> <cookie-name>JSESSIONID1</cookie-name> </session-descriptor>
到此,關于“如何解決同IP不同端口Session沖突問題”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。