在我的Web应用程序中,用户可以调用长时间运行的后端服务(同步请求)。这个服务的执行时间应该不计算websession超时,所以在我的代码中我尝试了:
handleUserRequest() {
HttpSession session = ...getSession(false);
int oldMaxInactiveInterval = session.getMaxInactiveInterval();
session.setMaxInactiveInterval(BIG_VALUE);
<LONG RUNNING TASK>
session.setMaxInactiveInterval(oldMaxInactiveInterval);
}
这不按预期工作。此#&#34;方法调用&#34;无法识别临时会话超时。用户会话根据oldMaxInactiveInterval值超时。
有可能吗,我想做什么? ; - )
答案 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