0

我们有一个基于 JSF 2.0(MyFaces) 构建并在 Weblogic 应用服务器上运行的应用程序。我们正面临一个关于 http Session 的问题。

问题:假设我在两个不同的 IE 窗口中打开了应用程序,并在第一个窗口中提供了一些搜索输入。在第一个窗口中接收到的搜索结果数据正在第二个窗口的会话中共享。

注意:。bean 的session范围javax.faces.STATE_SAVING_METHODserver. static不存在共享变量的问题。

知道为什么会发生这种情况,以及防止这种情况发生的解决方案(如果有的话)?

问候,沙吉。

4

2 回答 2

4

暴露的行为是预期的。如果您需要“窗口”范围,请查看MyFaces CODI Wiki @WindowScoped。另一种选择是使用 MyFaces Orchestra 并使用不同的对话上下文。

JSESSIONID 是 servlet 规范用来区分会话的 cookie,但在同一浏览器的所有窗口中共享。

有关更多详细信息,请咨询MyFaces 用户和开发邮件列表

于 2011-06-25T21:12:53.970 回答
3

这是因为 IE 将会话 ID 保存JSESSIONID在 cookie 中。该cookie存在于同一个IE“空间”中。您将意识到,如果您使用 IE 和 Firefox,则不会共享会话 cookie。

JSESSIONID本质上是您的 Web 容器用于会话跟踪的标识符。如果浏览器不支持 cookie,则会在 URL 上附加 ID。在您的情况下,您将 JESSIONID 存储在 cookie 中,并且所有多个窗口都可以看到相同的 Session cookie。

于 2011-04-08T09:51:05.210 回答