【问题标题】:Manually reset session timeout (keep alive) in a spring web application在 Spring Web 应用程序中手动重置会话超时(保持活动状态)
【发布时间】:2014-12-22 18:49:53
【问题描述】:
是否可以为当前登录我的网络应用程序的用户手动重置特定会话的超时间隔?
我希望能够做类似的事情:
public void keepAliveForUser(long userID) {
Session session = this.userSessionManager.getUserSessionById(userID);
session.resetTimeOut();
}
P.S - 请记住,此函数不会在跟进用户请求时被调用。 (即它是从 cron 作业、计划任务等中调用的......)
谢谢!
【问题讨论】:
标签:
java
spring
session
spring-mvc
tomcat
【解决方案1】:
您可以使用HttpSession#setMaxInactiveInterval 即时更改会话到期时间
Java 文档
指定客户端请求之间的时间,以秒为单位
servlet 容器将使该会话无效。消极时期
表示会话永远不会超时。
用法
//session will expire after 2 hours of inactivity
session.setMaxInactiveInterval(2 * 60 * 60);
【解决方案2】:
会话超时层次结构:
-
$tomcat_home/conf/web.xml
-
$your_webapp/WEB-INF/web.xml
- 手动调用
HttpSession.setMaxInactiveInterval(int)