1

我在 web.xml 中将 <session-timeout> 设置为 30 分钟。如果我没记错的话,这个应该只有在会话处于非活动状态时才在 30 分钟内注销会话。但是在我的应用程序中,无论活动如何,用户都会在 30 分钟内注销。谁能帮我解决这个问题?我不是问题所在。

4

2 回答 2

0

可能有很多原因可能导致意外的会话超时,并且没有更多信息,我所能提供的只是一些指示和建议。

  1. 你使用集群吗?如果这样做,请检查负载均衡器的算法和设置。用户请求是否在 30 分钟后转发到集群中的其他服务器?您是否在集群中配置了会话复制?确保负载均衡器不是罪魁祸首的另一种简单方法是关闭集群中除一个之外的所有其他服务器。因此,可以保证将请求发送到同一台服务器。然后,您可以检查 30 分钟超时是否仍然发生,无论用户活动如何。服务器访问日志还可以帮助您查看用户是否在服务器之间反弹。
  2. 如果您安装了任何浏览器插件,例如 ieHTTPHeaders,请检查每个请求发送的会话 cookie,看看是否有任何变化。
  3. 另一个问题是,如果您将 web.xml 中的 30 分钟超时更改为 15 分钟,无论用户活动如何,用户是否每 15 分钟超时一次?
于 2013-03-21T17:00:54.047 回答
0

检查您是否没有收到每个请求的新会话。一个简单的方法是在会话中存储一个 Integer 并随着每个请求增加它。然后将整数的值(作为整数或字符串)添加到响应中并将其显示在页面上(如果需要,显示可能会将其作为隐藏字段添加到页面中)。

于 2013-03-21T16:35:42.903 回答