Mark's Java Blog
MyEclipse, Java EE, Spring, Struts, Hibernate, JPA, SWT, Swing, AJAX, JavaScript,SOA
问题描述

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

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

问题分析

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

解决方案

第一种方案

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

<session-descriptor>
 <session-param>
 <param-name>CookieName</param-name>
 <param-value>myCookie1</param-value>
 </session-param>
 </session-descriptor>

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

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

第二种方案

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

特别注意

如果应用程序部署为Cluster的模式,将无法设定,否则部署时发生错误。
posted on 2008-04-01 16:47 Mark 阅读(5186) 评论(5)  编辑  收藏 所属分类: weblogic
Comments
  • # re: 同一个Server Weblogic两个Domain CookieName冲突导致session失效问题
    wjqnet
    Posted @ 2009-03-03 22:26
    求助:我也遇到相同的问题,但我是cluster的,那应该怎么办呢?  回复  更多评论   
  • # re: 同一个Server Weblogic两个Domain CookieName冲突导致session失效问题
    阿宗
    Posted @ 2009-07-25 19:21
    那,請問,一台是App1是Weblogic,但另一台是tomcat時,該怎麼處理?  回复  更多评论   
  • # re: 同一个Server Weblogic两个Domain CookieName冲突导致session失效问题[未登录]
    mark
    Posted @ 2009-07-27 09:41
    @阿宗

    不同服务器不存在我所描述的这类冲突  回复  更多评论   
  • # re: 同一个Server Weblogic两个Domain CookieName冲突导致session失效问题
    阿宗
    Posted @ 2009-07-31 21:43
    不好意思,我最近案子就發生這種情況,tomcat的session失效了  回复  更多评论   
  • # re: 同一个Server Weblogic两个Domain CookieName冲突导致session失效问题[未登录]
    mark
    Posted @ 2009-08-03 09:52
    @阿宗
    那主要是浏览器的session id改变了或者失效了造成的服务器端无法识别session  回复  更多评论   

只有注册用户登录后才能发表评论。


网站导航: