我们正在使用 Vaadin 应用程序,在使用过程中,Vaadin 最终会显示错误“ session 已过期”,但在托管此应用程序的 Glassfish 中, session 超时设置为 8 小时(比上次之间的时间长得多)访问并获取“ session 已过期”)。调试应用程序后,我们发现了这个问题:加载页面时,Vaadin 使用 request.getSession(true)
请求 session 。 ,对于后续的 ajax 请求,它使用 request.getSession(false)
;最终request.getSession(false)
返回null
,所以session expired
出现消息。看来 Web 容器忽略了 session 超时设置。
最佳答案
Glassfish 中的默认 session 超时为 30 分钟。如果这符合您的体验,则 8 小时(28800 秒)的超时设置会以某种方式被完全忽略。
您可以在 glassfish-web.xml 中指定超时: glassfish-web-app > session 配置 > session 属性 > timeoutSeconds
或者您可以在 web.xml 文件中指定 session 超时元素。这会覆盖 timeoutSeconds 值。
关于java - Vaadin 应用程序中忽略 Glassfish session 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13356169/