обработка выхода из системы в приложении eclipse RAP

В моем приложении RAP мне нужно выполнить некоторую обработку выхода из системы (вперед, сделать keycloak sso/logout). Где будет хороший крюк, чтобы сделать это?

org.eclipse.ui.application.WorkbenchAdvisor.postShutdown() выполняется также, если я обновляю окно браузера (F5), я не хочу, чтобы сеанс завершался при обновлении.
Скорее, если срок действия сеанса истек или окно браузера закрыто.
Есть ли ловушка для сеансов с истекшим сроком действия или событие аннулирования сеанса?

Найден UISessionListener.beforeDestroy(), но он также выполняется при обновлении браузера:

RWT.getUISession().addUISessionListener(new UISessionListener() {
    @Override
    public void beforeDestroy(UISessionEvent event) {
        System.out.println("UISessionListener.beforeDestroy" + event);
    }
});

person flavio.donze    schedule 12.01.2021    source источник


Ответы (1)


Код показывает, что UISessionListener перехватывает событие UISessionEvent, содержащее UISession. Этот объект привязан к HttpSession, если вы не хотите, чтобы истечение срока действия просто настроило сеанс на бесконечный (лучше сделать его долгим, но не бесконечным, зависит от количества пользователей, использующих приложение).

HttpSession по умолчанию имеет время истечения срока действия (например, для apache tomcat оно составляет 30 минут). Но это настраивается. Срок действия сеанса истек, когда не происходит ни одного касания сеанса (запроса) в течение такого тайм-аута.

Также по умолчанию сеанс сохраняется при закрытии/открытии вкладки, поскольку cookie сохраняется на стороне клиента (опять же, это поведение настраивается).

person simar    schedule 13.01.2021