Тайм-аут 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 минут), сессия будет закрыта.

Другие вопросы по тегам