“临时”为方法设置会话超时 - setMaxInactiveInterval

时间:2014-04-24 11:38:33

标签: java session web

在我的Web应用程序中,用户可以调用长时间运行的后端服务(同步请求)。这个服务的执行时间应该计算websession超时,所以在我的代码中我尝试了:

handleUserRequest() {
  HttpSession session = ...getSession(false);
  int oldMaxInactiveInterval = session.getMaxInactiveInterval();
  session.setMaxInactiveInterval(BIG_VALUE);
  <LONG RUNNING TASK>
  session.setMaxInactiveInterval(oldMaxInactiveInterval);
}

这不按预期工作。此#&#34;方法调用&#34;无法识别临时会话超时。用户会话根据oldMaxInactiveInterval值超时。

有可能吗,我想做什么? ; - )

1 个答案:

答案 0 :(得分:0)

如果在web.xml中定义了oldMaxInactiveInterval defaultsession-timeout,例如60,则意味着它是60分钟。当你使用session#setMaxInactiveInterval()进行设置时,它将始终为秒(1分钟)

它设置了Web应用程序的默认会话超时

<session-config>
    <session-timeout>60</session-timeout> // 60 minutes
</session-config>

调用session.setMaxInactiveInterval()设置调用它的特定会话的超时时间,并覆盖默认值。

请记住这种差异 - deployment descriptor版本使用分钟,session.setMaxInactiveInterval()使用秒。

session.setMaxInactiveInterval(300); // Its sets the 5 minutes