Spring Web flow - 流程重置

时间:2014-03-08 08:15:52

标签: java spring spring-webflow jsessionid

我们的流程在较低的开发环境中实际上可以正常工作,但在测试环境中偶尔(5%的时间)会爆炸。所以我可以看到代码中没有问题。 (测试环境有两个appservers)。我们正在使用Webspher app server btw

问题是每当我们尝试浏览流程时,突然流程重置重置并且用户登陆第一页。但是,在firebug中进行调试时,我们可以看到,只要JSESSIONID发生更改,就会重置流。我们的应用程序有2个WAR。因此,当页面加载时,图像,js,css在一个中,而java控制器在另一个中。因此,这会导致破坏/修改JSESSIONID的任何问题。

无法弄清楚为什么Cookie会发生变化。请帮忙。谢谢!

1 个答案:

答案 0 :(得分:1)

JSESSIONID cookie是servlet会话cookie,在一个会话期间不应该更改。

JSESSIONID cookie是第一次调用request.getSession()时由servlet容器创建的,请查看此answer

在这种情况下,似乎有些servlet请求转到一个WAR,而其他请求转到另一个请求,这会导致生成两个不可互换的JSESSIONID cookie。

一种解决方案是在同一个WAR中部署所有代码,以便只创建一个JSESSION cookie。

另一种解释是,在测试服务器中配置了非常短的会话超时,这会导致在用户导航时重置会话。

还要检查web.xml中的WAR和服务器中的spring安全配置,以查看测试中的会话超时设置是否不同。有时构建过程是特定于环境的并修改设置。