当前位置: 首页 > 知识库问答 >
问题:

如何在HttpSessionListener中获取Spring global alsession范围内的bean

佟英武
2023-03-14

所有。我看了网页,但没有找到适合我的解决方案。

在会话被销毁之前,我需要从HttpSessionListener中的globalsession作用域bean访问信息。

在检查会话属性后,我找到了一个解决方案,但它似乎并不顺利:

MyBean myBean = httpSessionEvent.getSession().getAttribute("scopedTarget."+"myBeanImlp");

我还有单例bean,通过目标代理包含会话bean,但通过ctx将它们放入sessionDestroyed。getBean(“mySingletonBean”),对会话bean的引用在它们内部无效(会话bean在sessionDestroyed调用之前已被销毁)

有没有人知道解决这样的问题的好方法?

我想我们需要类似于DestructionAwareBeanPostProcessor的东西,但是对于会话bean,我可以查看bean,准备好销毁并采取我需要的操作。

共有1个答案

时衡虑
2023-03-14

您可以尝试将会话侦听器定义为一个组件,并注入ApplicationContext(或必需的bean),然后访问它。您可以看看如何使用Spring将依赖项注入HttpSessionListener?

 类似资料:
  • 问题内容: 如何从SessionListener访问请求标头? 创建当前会话时,我需要在当前会话上设置超时。超时需要根据HttpServletRequest中的标头而有所不同。我已经有一个SessionListener(实现HttpSessionListener),它记录新会话的创建和销毁,这似乎是设置超时的最合逻辑的地方。 我尝试了以下操作,但始终将ctx设置为null。 问题答案: 将因为它被

  • 问题内容: 假设我有一张Java地图,看起来像这样: 如果键按排序顺序(使用树图或链接哈希图)。现在,如果我尝试获取> = 39和<41的值。那么我应该获取字符串“ 39至41”。如何有效地执行此操作? 问题答案: 看起来您想要的不止一个; 你想要一个!具体来说,您可以使用该操作。 这是一个例子: 需要注意的是也有,,和也,而不是操作以及它返回而不只是。

  • 我有来自Microsoft Azure数据中心(http://www.microsoft.com/en-us/download/confirmation.aspx?id=41653)的900个IP地址范围,我想知道IP地址是否来自其中一个地址。我已经把它转换成一个列表,可以存储在文本文件中。 所以:循环遍历每个地址并使用ip2long()如这里的第3点是否成本更高(https://mebsd.co

  • 问题内容: 有没有办法获取所有当前在javascript范围内的变量? 问题答案: 否。“范围内”变量由“作用域链”确定,该变量无法通过编程方式访问。 有关详细信息(很多),请查看ECMAScript(JavaScript)规范。这是指向官方页面的链接,您可以在其中下载规范规范(PDF),而这是指向官方的可链接HTML版本的链接。 根据您对Camsoft的评论进行更新 事件函数作用 域中 的变量取

  • 问题内容: 大家好。我试图在HttpSessionListener中获取会话bean,以便在用户注销或会话过期时可以删除用户在应用程序中创建的一些文件。我猜测会话bean不存在,因为会话已被破坏。我希望仍然以某种方式删除这些文件。谢谢您的帮助。 致BalusC:我又回到了您以前想到的方法。在我的应用程序中,将字节流传输给用户并不灵活。我发现我需要在页面上的ajax中做很多事情,如果我必须发送非aj

  • 我使用以下方法基于用户选择创建一个范围: 调用此函数的组件执行以下操作: 每当我选择文本时,范围总是相对于高亮显示的跨度结束的位置。因此,如果我的文本在0到50之间,我选择范围[25,26],然后选择范围[26,27],而不是突出显示范围[26,27],它突出显示范围[0,1],因为范围是[0,1]相对于{after}生成的文本。 只要我突出显示{之前}渲染的任何文本,我就没有问题,只有当我突出显