Vaadin . Настройка времени жизни устаревших UI.

· 1 минута на чтение

Vaadin 14.1.17

Настройка Jetty-embedded сервера для работы с сессиями Vaadin. Главные требования - бесконечная сессия при активном UI в браузере и максимально быстрое отключение закрытых UI (например, в случае перезагрузки страницы браузера).

// Установка параметра для авто-закрытия устаревших сессий. 
// Хотя на самом деле закрываются устаревшие UI, а не сессии.
System.setProperty("vaadin.closeIdleSessions", "true");
// Установка периодичности "живости" UI, в секундах
System.setProperty("vaadin.heartbeatInterval", "10");

Server server = new Server();
WebAppContext webAppContext = createWebAppContext();
server.setHandler(webAppContext);
WebSocketServerContainerInitializer.initialize(webAppContext);
server.start();

// Установка периода "вечной жизни" для UI.
webAppContext.getSessionHandler().setMaxInactiveInterval(-1);

Vaadin признаёт UI дохлой в случае, когда 3 раза подряд не получит ответы на heartbeat. Периодичность heartbeat по умолчанию равна 5 минутам.
Наша задача снизить эту периодичность, выбран период 10 секунд. Таким образом, после перезагрузки страницы (или ее закрытии) UI будет считаться живым еще чуть более 30 секунд. После чего можно будет получить реакцию detachListener.
Про heartbeat