【问题标题】:Programmatically define global session timeout in Java EE/GlassFish/Spring在 Java EE/GlassFish/Spring 中以编程方式定义全局会话超时
【发布时间】:2016-03-15 19:00:42
【问题描述】:

我想知道是否有一种方法可以在 Java EE/GlassFish/Spring 中以编程方式定义会话超时,而不是在 web.xml 中设置它。我知道您可以通过event.getSession().setMaxInactiveInterval(interval); 为一个会话执行此操作,但我想为所有会话执行此操作,包括以前创建的会话。

【问题讨论】:

    标签: jakarta-ee jboss session-timeout


    【解决方案1】:

    分解问题,您需要首先列出所有当前活动的会话,然后将它们无效。

    Java EE 不提供用于列出所有会话的现成 API,但通过添加 HttpSessionListener,您可以获得所有活动会话的列表。即将sessionCreated() 上的会话添加到列表中,并从列表中删除sessionDestroyed() 上的会话。

    一旦你完成了,那么,它只是一个遍历列表以更改会话属性的任务。

    【讨论】:

    • 我可以使用没有 HttpSessionListener 的 spring HttpSessionEventPublisher 吗?
    • @user2133558 当然,如果您在应用程序中使用 Spring。
    • 如果我希望用户能够通过 UI 进行更改,我如何将超时作为参数传递给此侦听器。 java中是否有方法可以访问某个有问题的侦听器?
    • @user2133558 获得会话列表后,您可以随时访问该列表并根据需要操作会话。为此,无需将参数传递给您的 SessionListener。但是,我不确定您为什么有如此复杂的要求。
    猜你喜欢
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 2011-09-04
    • 2012-05-18
    • 2017-09-13
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多