Тайм-аут Vaadin сессии и вопрос интерфейса
Я обнаружил, что пользовательский интерфейс Vaadin становится серым и становится неактивным, а сообщение об истечении сеанса не отображается. Кроме того, время сеанса не всегда истекает через 1 минуту, я установил для сердцебиения более высокое значение, чем время ожидания сеанса, поэтому сеанс должен всегда превышать время ожидания, прежде чем сердцебиение сохранит его.
Вот конфиг и код, который я связал с окончанием сессии.
<context-param>
<param-name>heartbeatInterval</param-name>
<param-value>240</param-value>
</context-param>
<session-config>
<session-timeout>1</session-timeout>
</session-config>
<servlet>
<servlet-name>VaadinExample</servlet-name>
<servlet-class>com.example.VaadinExample</servlet-class>
<init-param>
<param-name>closeIdleSessions</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
А в сервлете VaadinExample:
getService().setSystemMessagesProvider(
new SystemMessagesProvider() {
@Override
public SystemMessages getSystemMessages(
SystemMessagesInfo systemMessagesInfo) {
CustomizedSystemMessages messages =
new CustomizedSystemMessages();
messages.setSessionExpiredCaption("Session Expired");
messages.setSessionExpiredMessage("You have been inactive for over 30mins, click here to reload the application.");
messages.setSessionExpiredNotificationEnabled(true);
return messages;
}
});
Есть идеи?
1 ответ
240 1 -> установить тайм-аут на 60 (минут)
Браузер отправляет 1 сердцебиение каждые 240 секунд (каждые 4 минуты). Или ваше время ожидания составляет 1 минуту...
Если сервер не получит 1 биение после 3 попыток (4 минуты * 3 = 12 минут), сессия будет закрыта.