我有一个spring boot (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发送回来,但HttpSessionListener.createSession方法从未被调用。我不确定我在这里遗漏了什么。
发布于 2016-02-25 06:40:36
看起来你需要的功能还没有在稳定的版本中发布。然而,根据this ticket的说法,这是固定的,并且在spring-session的1.1.0 M1版本中可用。您可能想尝试spring-session的1.1.0.RC1版本,看看这是否对您的需求有所帮助。有关如何完成此操作的确切详细信息,请参阅in this doc link
如果不能选择使用1.1.0.RC1版本(或者如果您出于某种原因不喜欢使用RC1 ),您仍然可以通过使用自己的实现(比如MyCookieHttpSessionStrategy)扩展默认的CookieHttpSessionStrategy,然后覆盖onNewSession(..)来拦截会话创建和销毁事件。和onInvalidateSession(..)截获这些事件。将MyCookieHttpSessionStrategy注册为普通bean,您就完成了所有设置(它将被Redis会话存储库自动获取)。这在Redis会话中工作得很好,我在我的spring boot web应用程序中以这种方式使用这些事件。
希望这能有所帮助!!
https://stackoverflow.com/questions/35610923
复制相似问题