qqwe 发表于 2015-8-10 02:17:14

tomcat:怪异的的session冲突

  同一台服务器,运行两个tomcat-6.0.32,但是使用不同的端口,如果两个应用都使用localhost访问,则会产生session丢失现象,如果一个使用localhost,一个使用真实IP或者127.0.0.1,则不会产生session冲突。
  解决方法参考:http://my.oschina.net/moyuqi/blog/98475
  引用:
  使用apache反向代理解决在应用A使用Iframe嵌入应用B的功能而产生的跨域问题后,应用B的功能能正常使用了。但也产生了另外一个问题:打开应用A的任何页面都会跳转主页,问题原因是:session丢失。


具体分析:  session是通过在客户端生成一个cookie,所有请求会带上这个cookie。一个cookie的NAME、Domain和Path属性值均相同,则会覆盖,若未设置Domain域,则域为ip(不包括端口),因此应用A的session被应用B的session覆盖了。
  经测试:tomcat、weblogic、websphere的session默认都是JSESSIONID 为key来识别的,因此在没有特别设置下,同一个域下的多个应用session会互相覆盖。
  解决办法:
  设置各个应用使用不同的cookie-name,或者将JSESSIONID的path路径设置为不同。
  1)WebLogic的Cookie相关配置:weblogic.xml
  




  属性名


默认值



cookie-name
JSESSIONID
如未设置,默认为“JSESSIONID”


cookie-path
NULL
如未设置,默认为“/”


cookie-domain
NULL
如未设置,默认为发放cookie的服务器的域


  


示例代码:


1.    2.    3.CookieName4.HADFCookie5.    6.



延伸阅读:1.关于WebLogic的Session丢失的问题http://blog.iyunv.com/DesignLife/article/details/2552186

          2. WebLogic如何设置session超时时间http://tonyaction.blog.iyunv.com/227462/201900





  2)websphere的设置(设置不同JSESSIONID的path)
  应用程序->企业应用程序-> ->
会话管理->1.覆盖会话管理(需打钩).
会话管理->2.启用 cookie(需打钩)->修改'Cookie路径'



  3)Tomcat的设置(设置不同JSESSIONID的path)
  修改tomcat/conf/server.xml:
  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修改方法相同
  在Context容器标签上增加sessionCookieName参数

  

  还可以加上sessionCookiePath

...
页: [1]
查看完整版本: tomcat:怪异的的session冲突