java - getLastAccessedTime() 何时在 HttpSession 中更新

标签 java session jakarta-ee session-timeout

根据文档,每次在 session 生命周期内发出请求时,getLastAccessedTime() 都会更新。

我的应用程序有一个 Heartbeat Servlet,在用户登录系统并启动重要的扫描过程后每分钟调用一次。当用户登录时,会创建一个 session ,然后定期(每分钟)调用 Heartbeat。因此从逻辑上讲,这应该意味着 lastAccessedTime 每分钟更新一次。这个假设正确吗?

接下来,我将 session 超时设置为 15 分钟。如果用户处于非 Activity 状态 15 分钟(未运行扫描时), session 将被销毁并被 HttpSessionListener 的 sessionDestroyed 方法捕获。因此,lastAccessedTime 应显示上次访问 session 正好是 15 分钟前。唯一不会显示这一点的是当用户自己注销时。

为了明确起见,使用 lastAccessedTime 来查找用户上次在 session 中处于 Activity 状态的时间是否安全。另外,当 session 由于不活动而被销毁时,可以安全地假设时间始终为 15 分钟吗?

最佳答案

是的,每当请求带有与 session 关联的 cookie 时,getLastAccessedTime() 实际上都会更新。您的假设是正确的,lastAccessedTime 每分钟更新一次。

因此,如果您发送心跳,那么从技术上讲, session 始终处于 Activity 状态。

即将达到 session 超时值。是的,可以肯定的是,如果 15 分钟不活动, session 就会被破坏。但是,这绝不是你的情况。

关于java - getLastAccessedTime() 何时在 HttpSession 中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31172808/

相关文章:

java - 简单的 curl 从 linux 命令行失败

java - Java ME 中的是/否对话框

java - 无法使用 Runtime.getRuntime().exec() 执行脚本

java - 如何防止 mapstruct 映射大量字段而不必手动排除它们?

java - Spark Streaming Kafka 消息未被消费

session - 粘性 session 和 session 复制

session - Vaadin session setMaxInactiveInterval UI 响应不一致

c# - MVC3 站点丢失 session 中存储的值

java - 使用 JPA 和自动生成的主键在数据库中创建条目

performance - Java 堆瓶颈 - 如何确定原因?