Spring Boot + Spring Session HttpSessionListener не работает

У меня есть приложение весенней загрузки (1.3.2), в котором я реализовал HttpSessionListener. Я зарегистрировал слушателя из класса @Configration

@Configuration
@EnableRedisHttpSession
public class ApplicationSessionConfiguration {

@Bean
public ServletListenerRegistrationBean<HttpSessionListener> sessionListener() {
    return new ServletListenerRegistrationBean<HttpSessionListener>(new SessionListener());
}

}

Я отладил метод ServletListenerRegistrationBean.onInitialize, и слушатель регистрируется в ServletContext. Проблема заключается в том, что теперь, когда я делаю фиктивный вызов REST для приложения, сеанс создается правильно и отправляется обратно в виде файла cookie SESSION, но метод HttpSessionListener.createSession никогда не вызывается. Я не уверен, что мне здесь не хватает.


person user1610338    schedule 24.02.2016    source источник


Ответы (1)


Похоже, что нужная вам функция еще не выпущена в стабильной сборке. Однако в соответствии с этот билет это исправлено и доступно в релизе 1.1.0 M1 для весенней сессии. Вы можете попробовать версию весенней сессии 1.1.0.RC1, чтобы увидеть, помогает ли это тому, что вы хотите. Точные сведения о том, как это сделать, можно найти по ссылке на этот документ

В случае, если использование выпуска 1.1.0.RC1 НЕ является вариантом (или если вы предпочитаете не использовать RC1 по какой-либо причине), вы все равно можете перехватывать создание сеанса и уничтожать события, расширяя CookieHttpSessionStrategy по умолчанию своей собственной реализацией (скажем, MyCookieHttpSessionStrategy) и затем переопределение onNewSession(..) и onInvalidateSession(..) для перехвата этих событий. Зарегистрируйте MyCookieHttpSessionStrategy как обычный bean-компонент, и все готово (он будет автоматически выбран репозиторием сеансов Redis). Это прекрасно работает с сеансами Redis, таким образом я использую эти события в своем весеннем загрузочном веб-приложении.

Надеюсь это поможет!!

person Avnish    schedule 24.02.2016