【问题标题】:Irregularity on Session timeout in Vaadin Framework 7Vaadin Framework 7 中的会话超时异常
【发布时间】:2018-08-17 08:00:02
【问题描述】:

我正在使用Vaadin 7.7.9 和 Apache Tomcat 9.0。

我的目标是在 12 小时后使用户会话过期,因此如果用户在上午 8 点登录系统,则会话必须在下午 6 点左右过期。但是会话将在下午 3.5 到 4.5 之间到期。有时会话会在 15-30 分钟后过期。

为什么我的会话没有在 12 小时后过期?

servlet 类上的 Vaadin servlet 参数:

@VaadinServletConfiguration(productionMode = true, ui = 
    com.dokcloud.DokcloudUI.class, heartbeatInterval = -1, closeIdleSessions = true)

在我的 UI 类的 init 方法上:

DokcloudUI.getCurrent().getSession()
    .getSession().setMaxInactiveInterval(43200); // 12 hours

该系统正在Elastic bean stalk (AWS) 上发布。

【问题讨论】:

  • 你使用的是Push technology吗?我隐约记得,这样做可以使会话保持活动状态,从而防止自动关闭。该会话到期仅在会话处于非活动状态(安静)时才开始,这意味着用户没有做任何事情。自会话开始以来,到期时间不是,只是自用户(或可能是推送技术)的最后一次活动以来。
  • 据我所知,Vaadin 7 不是为在 Tomcat 9 上工作而构建的。你可能想坚持使用 Tomcat 8.5.x。
  • 是的,我正在使用 vaadin 提供的 @Push 注释(在自动模式下)。感谢您的回答,我将使用tomcat 8.5。所以要在 12 小时后过期会话,我必须启用心跳间隔并将其设置为 14400(12 小时 / 3 秒)?
  • 传统会话超时始终基于最后一个活动,而不是第一次交互的时间。您必须在 vaadin 会话中以您自己的逻辑来实现这一点。 (不是 servlet 会话)

标签: session tomcat java-8 vaadin vaadin7


【解决方案1】:

我很久以前就发现了这个问题。 AWS环境下需要调整一些超时参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    相关资源
    最近更新 更多