• 同IP不同端口Session冲突问题


    同IP不同端口Session冲突问题

    分类: tomcat

         一个服务器上搭建了多个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-INFWeblogic.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/

  • 相关阅读:
    Codeforces 937D
    Codeforces 458C
    Codeforces 934D
    Codeforces 934C
    Codeforces 36B
    Codeforces 374C
    Codeforces 374D
    编译优化
    Codeforces E
    Codeforces 920G
  • 原文地址:https://www.cnblogs.com/u0mo5/p/4475968.html
Copyright © 2020-2023  润新知