一尘不染

通过服务更改会话时间

tomcat

我想创建一个以分钟为单位的时间的服务/ servlet,并更改会话超时值,这意味着我想更改

<session-config>
   <session-timeout>1</session-timeout>
</session-config>

我知道

request.getSession(true).setMaxInactiveInterval(seconds);

仅更改当前的流行,而不更改所有会话。


阅读 240

收藏
2020-06-16

共1个答案

一尘不染

如果不进行某种扩展并依赖于Tomcat自己的类,<session-timeout>一旦设置了默认值,我将不知道如何以编程方式更改默认值。

一种替代方法是单独存储可变的会话超时值(可能在数据库中)-您的服务可能负责更新/检索。然后,您可以HttpSessionListener根据此值使用a
来修改新创建的会话的超时。

例如:

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)

不是您要寻找的确切答案,而是实现它的一种可能方法。

2020-06-16