1

我目前正在国际化一个网站,并且遇到了一些关于jsessionIDs. 我正在使用 Apache Web 服务器,它通过 mod_jk 跨多个 JBoss 应用程序服务器进行负载平衡。

当我在默认的 GB URL 上访问该站点时,jsessionID 会在专用的 jboss 应用服务器上正确创建。例如www.mysite.com创建会话GB_Jboss

当我将 URL 更新为 时www.mysite.com/fr,我希望在 上创建一个新的 jsessionID FR_JBoss

当我将 URL 更新为 时www.mysite.com/us,我希望在 上创建一个新的 jsessionID US_JBoss

但是,每次我更新 URL 时,它总是显示原始的 jsessionID。

我希望这是有道理的?有什么想法可以让我通过 Apache 工作吗?或者这是负载平衡器的负载平衡问题?

4

1 回答 1

0

很想知道为什么要为不同的 URI 创建新会话。无论如何,我能想到的几个选择:

  1. 在 cookie 中为您为其生成会话的 URI 添加一个条目。例如,如果yoursite/fr首先获得了会话,则将其添加到客户端 cookie。在每个请求上,您可以使用过滤器来检查 URI 是否与 cookie 中指定的不同。如果是,则使该会话无效并为用户创建新会话。
  2. 在服务器端维护一个具有站点 URI 和会话 ID 映射的单例 HashMap。如果站点 URI 与每个请求的会话 ID 不匹配 - 使会话无效。这种方法的缺点是 HashMap 需要在集群中的所有节点上复制,以便在故障转移到另一台服务器后正常工作。
于 2011-07-26T17:41:39.093 回答