JdbcOperationsSessionRepository и SessionDestroyed не совместимы - PullRequest
0 голосов
/ 05 февраля 2020

Я использую весеннюю загрузку и использую весеннюю сессию, где весна создает сессию в таблице APP_SESSION и добавляет в нее строки. У него есть столбец max_inactive_interval, в котором есть значение в несколько секунд, после которого время сеанса истекает. Теперь я хочу сделать что-то до истечения времени ожидания сессии. Я хочу выполнить некоторые операции с базой данных на другой таблице и установить флаг.

Я использовал JdbcOperationsSessionRepository для этого

    @Bean
@Order(1)
public JdbcOperationsSessionRepository sessionRepository(
    @Qualifier("springSessionJdbcOperations") JdbcOperations jdbcOperations,
    PlatformTransactionManager transactionManager) {
    JdbcOperationsSessionRepository repository = super.sessionRepository(jdbcOperations, transactionManager);
    repository.setDefaultMaxInactiveInterval(maxInactiveIntervalInSeconds);
    repository.setTableName(TABLE_NAME);
    return repository;
}

Я пробовал это

@Bean                           // bean for http session listener
public HttpSessionListener aohttpSessionListener() {
    return new HttpSessionListener() {
        @Override
        public void sessionCreated(HttpSessionEvent session) {               // This method will be called when session created
            System.out.println("Session Created with session id+" + session.getSession().getId());
        }

        @Override
        public void sessionDestroyed(HttpSessionEvent session) {         // This method will be automatically called when session destroyed
            System.out.println("Session Destroyed, Session id:" + session.getSession().getId());
            // database operations
            }

        }
    };

Но это не работает, я думаю, в соответствии с этим https://github.com/spring-projects/spring-session/issues/1082

Любая помощь приветствуется. Заранее спасибо.

1 Ответ

0 голосов
/ 03 марта 2020

Spring Session JDB C не поддерживает публикацию событий сеанса. Только Red Session Redis поддерживает это.

Комментарий исходного кода в строке 68

...