首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring会话处理:未收到HttpSessionDestroyedEvent

Spring会话处理:未收到HttpSessionDestroyedEvent
EN

Stack Overflow用户
提问于 2012-10-10 08:08:39
回答 2查看 5.2K关注 0票数 9

我有一个web应用程序,我在web.xml中添加了HttpSessionEventPublisher作为侦听器。web应用程序运行在Jetty 7.x上,我们使用的是Spring 3.1.1。

这应该会将HttpSessionCreatedEventHttpSessionDestroyedEvent触发到Spring上下文事件侦听器。

我有一个实现ApplicationListener<ApplicationEvent>的Bean (@Controller)。ApplicationEventHttpSessionCreatedEventHttpSessionDestroyedEvent的共同父类。当我现在登录到我的web应用程序或从它注销时,我希望这些事件会被触发到onApplicationEvent(ApplicationEvent event)方法。我还收到了其他事件,比如一些请求处理事件,但预期的事件没有出现。我对这个应用程序进行了一点跟踪,HttpSessionEventPublisher肯定会将事件触发到上下文中,但不会接触到侦听器。我在这里错过了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-10 08:36:02

问题是HttpSessionEventPublisher在每个javadoc的"Spring Root WebApplicationContext“上发布事件,这是通过web.xml文件中的ContextLoaderListener条目注册的应用程序上下文。另一方面,您的@Controller可能是通过完全不同的应用程序上下文注册的-通过DispatcherServlet注册的应用程序上下文。因此,我建议您创建一个不同的ApplicationListener,将其注册到根WebapplicationContext,然后事件应该会通过。

票数 8
EN

Stack Overflow用户

发布于 2017-05-11 16:45:37

面对类似的问题,如果不能将ApplicationListener移到根上下文,您可以使用org.springframework.security.context.DelegatingApplicationListener.

只需在Bean中自动连接一个DelegatingApplicationListener,并使用构造函数/ @PostConstruct根据DelegatingApplicationListener注册您的侦听器(spring-security应该已经准备好了)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12810153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档