Java 如何在注销侦听器中获取http会话id?

Java 如何在注销侦听器中获取http会话id?,java,spring,session,spring-security,logout,Java,Spring,Session,Spring Security,Logout,我的侦听器侦听用户注销。 我需要知道此侦听器上的会话id public class MyLogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler { @Autowired private UserService userService; @Override public void onLogoutSuccess(HttpServletRequest request, HttpServletRespons

我的侦听器侦听用户注销。 我需要知道此侦听器上的会话id

public class MyLogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler {
    @Autowired
    private UserService userService;

    @Override
    public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication)
            throws IOException, ServletException {
         RequestContextHolder.currentRequestAttributes().getSessionId();
    }
}
它产生

未找到线程绑定请求:您是指实际web请求之外的请求属性,还是在最初接收线程之外处理请求?如果您实际上在web请求中操作,并且仍然收到此消息,那么您的代码可能在DispatcherServlet/DispatcherPortlet之外运行:在这种情况下,请使用RequestContextListener或RequestContextFilter公开当前请求

如何在我的具体情况下修复它?

请参阅StackOverflow。将以下内容添加到
web.xml

<web-app>
  ...
  <listener>
    <listener-class>
        org.springframework.web.context.request.RequestContextListener
    </listener-class>
  </listener>
  ...
</web-app>

...
org.springframework.web.context.request.RequestContextListener
...