[转]同一个Server Weblogic两个Domain CookieName冲突问题

[b]问题描述[/b]

集成项目HT实施过程中碰到这样的问题,本次集成是把两个不同的应用集成到同一个页面框架下,部署方式为:

同一个Server ServerName = Server01,同一个Weblogic,分别建立两个Domain,Domain01(port-7001)和Domain02(port-7002),将应用App1部署在Domain01,将应用App2部署在Domain02,同时启动这两个Domain,如果完全是默认配置,单独访问两个应用是没有问题的,但是在同一个客户端如果访问App1之后再访问APP2会发现App1的Session丢失。

[b]问题分析[/b]

客户端在访问App1时,Domain01会在该客户端保留一个名为 JSessionID的Cookie,记录了Domain01的信息,JSessionID为Weblogic cookie-name的默认值,当同一个客户端访问App2时,该客户端Cookie中JSessionID的值被Domain02刷新,此时如果在之前已经打开的IE中继续访问App1会发现Session丢失(JSessionID已经被Domain02刷新!)。

[b]解决方案[/b]

[b]第一种方案[/b]

在App1或者App2的weblogic.xml文件添加如下属性


session-descriptor
cookie-name AnotherSESSIONID cookie-name
session-descriptor

将 的值更改为不同于默认值就可以

如果不添加这个,那么客户端的COOKIE中保存的SESSION ID的对象名字是JSESSIONID,来自同一个SERVER上面的应用可能会造成这个SESSION ID的丢失,因为只要是WEBLOGIC产生的SESSION ID都是保存在这个名字的COOKIE中,这段配置就是把应用中的这个名字换成我们私有的,避免和其它域中的应用产生的JSESSIONID冲突。

[b]第二种方案[/b]

访问App1时用IP来访问,访问App2时用域名来访问。

[b]特别注意[/b]

如果应用程序部署为Cluster的模式,将无法设定,否则部署时发生错误。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值