server.session.timeout в application.yml не используется при развертывании на коте как война

У меня есть эта конфигурация в моем 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

person user3728821    schedule 27.04.2017    source источник
comment
stackoverflow.com/questions/43215649/ похоже на аналогичный вопрос. В основном application.yml не уверен в спецификации, зависит от используемого плагина и так далее. Короче говоря, appilcation.groovy можно создать в том же пути/папке, что и application.yml. Ваше приложение будет читать оба файла, и вы можете настроить его в стиле yml или в старом стиле .groovy, который был some.element.key=value   -  person V H    schedule 27.04.2017
comment
Это действительно та же проблема. Я проверю, работает ли он, если вместо этого перемещу его в файл .groovy. Я все еще думаю, что это ошибка. Есть мысли по этому поводу?   -  person user3728821    schedule 28.04.2017
comment
в ответе на этой странице говорится, что для этого вам нужно настроить tomcat, так что сомневайтесь, что это ошибка   -  person V H    schedule 28.04.2017
comment
Это то, что всегда можно было настроить в config.groovy (в grails v2.x), и я думаю, что если это было удалено, это должно быть указано в руководстве по миграции. Вот почему я подозреваю, что это ошибка.   -  person user3728821    schedule 29.04.2017
comment
Да, но grails 2 не использовал весеннюю загрузку, совершенно новую технологию в grails 3. Вы должны прочитать комментарии внизу ответа, которые указывают на эту тему stackoverflow.com/questions/28103852/   -  person V H    schedule 29.04.2017
comment
Я понимаю, что могу запрограммировать решение этой проблемы. Это кажется слишком чрезмерным, чтобы реализовать это. Я только что поэкспериментировал с настройкой его в конфигурационном файле application.groovy, и, похоже, он работает. Я попытался установить server.session.timeout = 50, и тайм-аут происходит через 50 секунд. Просто кажется странным, что два конфигурационных файла application.xx не предлагают одинаковую функциональность.   -  person user3728821    schedule 29.04.2017


Ответы (2)


При развертывании приложения Grails 3 в автономном приложении tomcat не следует использовать свойство конфигурации springboot server.session.timeout. Что это только для встроенного сервера.

Spring boots - sever.session.timeout - Конфигурация встроенного сервера

Чтобы настроить время ожидания сеанса в приложении 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) Вы можете добавить файл web.xml в свое приложение Grails 3 с тайм-аутом, необходимым для каждого приложения.

Создайте файл по пути «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>
person Sergio del Amo    schedule 22.05.2017

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)
person Tom Supergan    schedule 15.10.2019