Я использую весеннюю загрузку и использую весеннюю сессию, где весна создает сессию в таблице 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
Любая помощь приветствуется. Заранее спасибо.