1.问题现象
首先登陆的时候是一个sessionID,因为是在A应用中访问B应用,所以这个sessionID会发送到服务端,当服务端找不到资源的时候,报404错误,session被覆盖,这个是问题的所在。
2.问题分析
这个是个典型的session覆盖问题,我跟踪了一下sessionID,发现当报404错误之后,sessionID找不着了,所以从这可以判断,session不是被proxy丢失的。
####<2010-12-26 下午09时41分24秒 CST> <Debug> <Http> <IBM-HX-WWAPP-1> <Proxy> <[ACTIVE] ExecuteThread: '74' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <> <1293370884340> <BEA-000000> <HttpRequest@31681840 - /stzscqww/web/public/css/style.css: Trying other contexts to find valid session for id: yqQsNYmHpnnnwpCpLDH2QbchV84d4v7l1WpwMvh9GL1pZw7zc9mj!1965737009>
接下来跟踪结果显示,sessionID是被覆盖了,所以将不同应用的session保存在不同的位置,这样session就不会被其他应用覆盖。
3.解决办法
将每个应用的session保存在不同的应用下,这只要修改每个应用的weblogic.xml文件,修改如下:
<weblogic-web-app>
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
<session-descriptor>
<cookie-path>/stzscqww</cookie-path>
</session-descriptor>
<context-root>/stzscqww</context-root>
</weblogic-web-app>