【发布时间】:2013-10-26 22:09:46
【问题描述】:
我们在部署在具有负载平衡器和粘性会话的 JBOSS 集群环境中的 Struts 应用程序中面临一个问题
问题描述
1) 此问题发生在具有 2 个页面(register1.do 和 register2.do 页面)的用户注册功能中
2) 当用户点击注册地址时,https://ourwebsite.com/register1.do
发出了两个 GET 请求
GET register1.do(获取第一个注册页面并在会话中设置一些值)
GET captcha.do(这会加载要在 register1.do 上显示的验证码图像)
3) 有时会发生对 register1.do 的 GET 请求设置一个 JSESSIONID cookie,而对 captcha.do 的 GET 请求 over write JSESSIONID cookie 由第一个请求设置。这会导致第二个注册页面出现问题,因为它会获取存储在会话中的一些值,并且由于会话被验证码覆盖,因此无法获取任何值。 见下图
4) 这种情况并非每次都会发生,一旦发生此问题,如果我们返回 register1.do 页面刷新(F5)/硬刷新(Ctrl + F5),则对验证码的 GET 请求不会结束编写 JSESSIONID cookie 和用户注册工作正常。
而且这只发生在集群环境中,在单个 JBOSS 环境中它工作正常。
谁能帮我找出可能的问题 在这里?
为什么我们刷新页面时会话没有被覆盖?
【问题讨论】:
-
我有一个类似的问题,使用 mod_cluster 从 apache 到两个 JBoss 服务器进行负载平衡。看来 mod_cluster 不尊重会话粘性,我还没有找到解决它的解决方案。你的技术栈是什么样的?
-
我对使用 mod_cluster 1.3.1 的 JBoss EAP 7 集群有类似的问题。我正在分享我的问题的链接:[link] (stackoverflow.com/questions/43454068/…)
标签: java cookies jboss load-balancing jsessionid