当部署到tomcat作为战争时,不使用application.yml中的server.session.timeout

时间:2017-04-27 12:18:51

标签: grails grails3.2.0

我在application.yml中有这个配置

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

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

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

application.groovy配置文件怎么样?似乎找不到这个规范吗?

我的环境:

  • Grails版本:3.2.8
  • Gradle版本:3.4.1
  • Intellij IDEA版本:2017.1.2
  • Tomcat版本:8.0.26     JDK版本:1.8.0_45

2 个答案:

答案 0 :(得分:2)

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

Spring boots - sever.session.timeout - Embedded Server configuration

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

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>

答案 1 :(得分: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)