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. <session-descriptor> 2. <session-param> 3. <param-name>cookiename</param-name> 4. <param-value>hadfcookie</param-value> 5. </session-param> 6. </session-descriptor>
2)websphere的设置(设置不同jsessionid的path)
应用程序->企业应用程序-> [application server] ->
会话管理->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
...
延伸阅读:tomcat修改jsessionid在cookie中的名称
公司名称: 凯发天生赢家一触即发官网的简介:渣土消纳证办理,大型支护土方深度开挖,矿山暗挖,基坑开挖,建筑垃圾清运,渣土清运,砂石料配送,工程机械租赁业务
公司网址: