我在application.yml中有这个配置
server:
contextPath: /appname
session:
timeout: 7200 # 2 hours in seconds
当我在Intellij IDEA中运行时,这工作正常,但是当我将构建.war文件部署到tomcat实例时,这将被忽略。这是一个错误还是预计不会像这样工作?
此外,我似乎无法找到可以在application.yml中编写的内容的规范。有谁知道这可以找到的地方?
application.groovy配置文件怎么样?似乎找不到这个规范吗?
我的环境:
答案 0 :(得分:2)
将Grails 3应用程序部署到独立的tomcat应用程序时,不应使用springboot server.session.timeout
配置属性。它只适用于嵌入式服务器。
要在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)