【问题标题】:stale session data - websphere过时的会话数据 - websphere
【发布时间】:2012-06-14 10:33:06
【问题描述】:

我在 Websphere 6 中的 http 会话有一个陈旧的属性,可能与内存会话复制有关。..

步骤:

  1. 对象 A.0 - 放置在 ID 为“ABC”的会话中
  2. 从会话中删除 A.0..
  3. 对象 A.1(新实例) - 放入 ID 为“ABC”的会话中
  4. 从会话中检索 ID 为“ABC”的对象 - 结果:A.1(正确)
  5. 执行 Servlet 转发或重定向(在这两个函数上都可以看到问题)..
  6. 从会话中检索“ABC” - 结果:A.0,从会话中删除的对象..

注意事项 -

  • 在步骤 1-5 中使用的相同会话对象(哈希码/会话 ID) 跨 2 个 JVM(单个集群)的内存复制
  • 第 2 步和第 5 步之间的持续时间总共为 4 秒
  • 在此期间没有其他外部线程访问该会话..
  • 仅注意到 1 个特定用例;没遇到过这个
    其他用例..

在从 websphere 应用程序服务器返回过时数据之前,有人见过类似的情况吗?

谢谢,

伊恩。

【问题讨论】:

  • 伊恩你明白了。我无法理解这些步骤(或你所说的问题)
  • 您是否在使用带有 WebSphere 插件的 Web 服务器?只有当您实际切换了集群成员时,复制才会成为一个因素,如果您使用的是 WebSphere 插件,那么只要会话处于活动状态,您就不应该这样做。您是否自定义了任何会话设置?例如,您的会话管理 > 自定义调整参数是什么?

标签: session websphere session-replication


【解决方案1】:

在转发/重定向之前,您是否明确将更改的对象写回会话?至少在某些 WebSphere 版本中,在某些配置中,您必须这样做以确保“已提交”更改。

(如果我找到明确的参考,我会更新我的答案。)

【讨论】:

  • “明确”是什么意思?我在重定向之前在 HttpSession 上做了一个“setAttribute”,但不做任何其他事情......
  • 这就是我的意思。如果您 getAttribute() 并更改了对象的内容,但随后不 setAttribute() 返回,您可能会遇到问题。但显然这不是你的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多