3

我的 application.yml 中有这个配置

server:
    contextPath: /appname
    session:
        timeout: 7200  # 2 hours in seconds

当我在 Intellij IDEA 中运行时,这工作正常,但是当我将 build .war 文件部署到 tomcat 实例时,这被忽略了。这是一个错误还是预计不会像这样工作?

此外,我似乎无法找到可以在 application.yml 中编写的规范。有谁知道在哪里可以找到这个?

application.groovy 配置文件怎么样?似乎无法为此找到规范?

我的环境:

  • Grails 版本:3.2.8
  • 摇篮版本:3.4.1
  • Intellij IDEA 版本:2017.1.2
  • Tomcat 版本:8.0.26 JDK 版本:1.8.0_45
4

3 回答 3

2

当您将 Grails 3 应用程序部署到独立的 tomcat 应用程序时,您不应使用 springbootserver.session.timeout配置属性。它仅适用于嵌入式服务器。

Spring boots - sever.session.timeout - 嵌入式服务器配置

要在部署到独立 tomcat 中的 SpringBoot 应用程序(Grails 3 应用程序构建在 SpringBoot 应用程序之上)中配置会话超时,您有两种选择:

A)部署在该 tomcat 实例中的每个应用程序的超时。

您可以直接在 tomcat 配置文件中编辑会话超时:

$TOMCAT_HOME/conf/web.xml

寻找块:

<!-- ==================== Default Session Configuration ================= -->
<!-- You can set the default session timeout (in minutes) for all newly   -->
<!-- created sessions by modifying the value below.   -->

 <session-config>
     <session-timeout>30</session-timeout>
 </session-config>

B)您可以在 Grails 3 应用程序中添加一个 web.xml 文件,每个应用程序都需要超时。

在路径 'src/main/webapp/WEB-INF/web.xml' 中创建一个文件,其内容为:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 <session-config>
     <session-timeout>30</session-timeout>
 </session-config>
</web-app>
于 2017-05-22T06:53:05.070 回答
0

C)您也可以使用 tomcat 的HttpSession setMaxInactiveInterval(seconds)方法在您的 Groovy 代码中进行设置。

if (grailsApplication.config.getProperty("session.timeout")?.isInteger())
    // session timeout in seconds
    session.setMaxInactiveInterval(grailsApplication.config.session.timeout as int)
于 2019-10-15T16:46:56.020 回答
0

请注意,对于(当前最新的)Grails 5.x 和 spring boot 2.5,正确的属性名称是server.servlet.session.timeout,因此 application.yml 配置将如下所示:

server:   
    servlet:
      session:
        timeout: 3600  #seconds

春季启动文档: https ://docs.spring.io/spring-boot/docs/2.5.5/reference/html/application-properties.html#application-properties.server.server.servlet.session.timeout

于 2022-01-17T18:41:17.457 回答