部署到 Tomcat 时,Grails 3 会话超时不起作用

Posted

技术标签:

【中文标题】部署到 Tomcat 时,Grails 3 会话超时不起作用【英文标题】:Grails 3 session timeout not working when deployed to Tomcat 【发布时间】:2017-08-30 03:36:58 【问题描述】:

我正在使用 Grails 3.2.3。我已经增加了会话超时,如https://***.com/a/30861747/2405040 所述,即在application.yml 中添加以下内容:

server:
   session:
      timeout: 604800 #one week in seconds

这在开发中运行良好,即 session.getMaxInactiveInterval() 返回 604800 但是当我在 Tomcat 上部署 WAR 时(使用 Tomcat 8.5.6),不会反映此会话超时设置,并且该值默认为 1800 秒。

"org.springframework.boot:spring-boot-starter-tomcat"build.gradle 中设置为provided

(我之前正在修改会话超时,正如我在此处描述的 https://***.com/a/40382383/2405040 但后来我意识到,这与嵌入式 tomcat 有关,因此切换到上述 application.yml 设置)

我这里有什么遗漏吗?

【问题讨论】:

【参考方案1】:

最好的猜测是,您部署到的 Tomcat 容器不使用

server:
   session:
      timeout: 604800

您设置的值,因为这只是嵌入式 Tomcat 容器的指令。当你部署为war时,你必须配置你部署到的Tomcat服务器:

https://tomcat.apache.org/tomcat-8.0-doc/config/http.html

【讨论】:

是的,我也这么认为!但是有没有办法像 Grails 2 这样在应用程序中增加超时时间? 也许这篇博文可以提供帮助:fruzenshtein.com/spring-java-configuration-session-timeout。我从这个 SO 得到了那个链接:***.com/questions/28103852/…

以上是关于部署到 Tomcat 时,Grails 3 会话超时不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Tomcat 7 上部署 Grails 3 应用程序?

Grails,在 AJAX 调用中处理会话超时

JBoss 6 迁移:部署 grails 应用程序时出错

使用 Tomcat 部署 grails 应用程序的最佳实践

在tomcat上的grails spring security中登录用户的会话

多个 Grails 应用程序会话超时问题