我们的流程实际上在较低的开发环境中运行良好,但在测试环境中偶尔(5% 的时间)会崩溃。所以我可以看出代码没有问题。 (测试环境有两个应用程序服务器)。顺便说一句,我们正在使用 Webspher 应用服务器
问题是,每当我们尝试在流程中导航时,流程就会突然重置并且用户登陆到第一页。然而在 firebug 中调试,我们可以看到只要 JSESSIONID 发生变化,流程就会重置。我们的应用程序有 2 个 WAR。因此,当页面加载时,图像、js、css 在一个中,而 java Controller 在另一个中。那么这是否会导致损坏/修改 JSESSIONID 的任何问题。
不太明白为什么 cookie 会被改变。请帮忙。谢谢!
最佳答案
JSESSIONID cookie 是 servlet session cookie,在一个 session 期间不应更改。
JSESSIONID cookie 是由 servlet 容器在第一次调用 request.getSession()
时创建的,看看这个 answer .
在这种情况下,似乎某些 servlet 请求会转到一个 WAR,而其他请求会转到另一个 WAR,这会导致生成两个不可互换的 JSESSIONID cookie。
一种解决方案是将所有代码部署在同一个 WAR 中,以便只创建一个 JSESSION cookie。
另一个解释是,在测试服务器中配置了非常短的 session 超时,这会导致 session 在用户导航时重置。
还要检查web.xml中的WAR和服务器中的spring security配置,看看测试中的 session 超时设置是否不同。有时构建过程是特定于环境的并修改设置。
关于java - Spring Web Flow——流程被重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22266876/