【发布时间】:2014-12-05 08:18:15
【问题描述】:
我正在开发一个 vaadin Web 应用程序,并在我的 web.xml 中添加了以下 sn-p 代码。
<session-config>
<session-timeout>30</session-timeout>
</session-config>
现在我注意到我的用户在 30 分钟后也可以使用该应用程序,但我不希望这样。我在 vaadin 的书上读到了一些关于这个问题的东西,但我并没有解开一些东西。
来自 vaadin 书:
用户不活动后会话超时
在正常的 servlet 操作中,会话超时定义了允许的 服务器应该清理会话的不活动时间。 不活动是从最后一个服务器请求开始测量的。不同的 servlet 容器使用不同的超时默认值,例如 30 Apache Tomcat 的分钟数。您可以在下设置超时 与:
在 web.xml 中:
<session-config> <session-timeout>30</session-timeout> </session-config>会话超时应长于心跳间隔或 否则会话在心跳可以保持之前关闭 活。由于会话到期使 UI 处于它们的状态 假设会话仍然存在,这将导致不同步 浏览器中的错误通知。
但是,心跳间隔比会话超时更短, 这是正常情况,可防止会话过期。如果 servlet 的 closeIdleSessions 参数已启用(由 默认),Vaadin 会在该时间后关闭 UI 和会话 session-timeout 参数中指定的最后一个过期时间 非心跳请求。
在 web.xml 中:
<servlet> ... <init-param> <param-name>closeIdleSessions</param-name> <param-value>true</param-value> </init-param>
现在我认为问题在于我的应用程序服务器让 UI 处于他们认为会话仍然存在的状态,但我无法理解什么是心跳? closeSessionId 究竟做了什么?
【问题讨论】:
-
为了测试给它 1 分钟并检查它是否正常工作。
标签: java session servlets vaadin vaadin7