【发布时间】:2013-12-20 23:38:37
【问题描述】:
我想创建一个以分钟为单位的服务/servlet,并更改会话超时值,这意味着我想更改
<session-config>
<session-timeout>1</session-timeout>
</session-config>
我知道
request.getSession(true).setMaxInactiveInterval(seconds);
只改变当前的视野,而不是所有的会话。
【问题讨论】:
我想创建一个以分钟为单位的服务/servlet,并更改会话超时值,这意味着我想更改
<session-config>
<session-timeout>1</session-timeout>
</session-config>
我知道
request.getSession(true).setMaxInactiveInterval(seconds);
只改变当前的视野,而不是所有的会话。
【问题讨论】:
如果不以某种方式扩展并依赖于 Tomcat 自己的类,我不知道一旦设置了默认 <session-timeout>,您如何以编程方式更改它。
另一种方法可能是单独存储可变会话超时值(可能在数据库中) - 您的服务可能负责更新/检索。然后,您可以使用HttpSessionListener 根据此值修改新创建会话的超时时间。
例如:
public class SessionTimeoutModifier implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent event) {
int timeout = sessionService.getSessionTimeout(); // Gets your value
event.getSession().setMaxInactiveInterval(timeout); // Override default
}
...
然后可以开发一个 Web 前端 (servlet),它可以通过 sessionService.setSessionTimeout(value) 改变您的会话超时。
不是您正在寻找的确切答案,而是实现它的一种可能方法。
【讨论】: