HttpSessionEventPublisher在java配置中不工作

HttpSessionEventPublisher在java配置中不工作,java,spring-security,Java,Spring Security,我有一个成熟的java web应用程序,它使用spring安全性(4.2.3、java8、tomcat8),并包含一个视图,允许用户查询会话注册表以查看还有谁登录。这取决于HttpSessionEventPublisher在用户注销时通知会话注册表。 最初的实现使用web.xml配置,但我现在主要使用java配置重新实现了它。我重构的最后一件事是HttpSessionEventPublisher。 当我将它从web.xml声明移动到WebSecurity配置适配器时,它停止工作。特别是,注销会话

我有一个成熟的java web应用程序,它使用spring安全性(4.2.3、java8、tomcat8),并包含一个视图,允许用户查询会话注册表以查看还有谁登录。这取决于HttpSessionEventPublisher在用户注销时通知会话注册表。 最初的实现使用web.xml配置,但我现在主要使用java配置重新实现了它。我重构的最后一件事是HttpSessionEventPublisher。 当我将它从web.xml声明移动到WebSecurity配置适配器时,它停止工作。特别是,注销会话不再从注册表中删除。 我知道bean正在被实例化(工厂方法正在被调用)

这是参考文档中建议的java配置:

@Bean
public HttpSessionEventPublisher httpSessionEventPublisher() {
    return new HttpSessionEventPublisher();
}

要在java配置中实现这一点,需要一些技巧吗?

HttpSessionEventPublisher
应该注册为标准侦听器,而不是Springbean。检查一下

因此,我认为您需要使用
WebApplicationInitializer
注册它,如下所示:

public final class MyWebAppInitializer implements WebApplicationInitializer {
  @Override
  public void onStartup(final ServletContext ctx) {
    ctx.addListener(new HttpSessionEventPublisher());
  }
}