Подтвердить что ты не робот

Как отключить сохранение сеанса Tomcat в Spring Загрузка через имя менеджера?

В Tomcat есть известный вариант конфигурации в conf/context.xml, чтобы отключить сохранение сеанса:

<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<Manager pathname="" />

При использовании без комментирования, как показано здесь, прикладная реализация org.apache.catalina.Manager (например, org.apache.catalina.session.StandardManager) не имеет pathname, чтобы сообщить ей, где хранить сеансы на диске, и, таким образом, она не записывает файлы сеанса на диск (например, при выключении), что мы и хотим.

Другими словами, это отключает стандартную функцию Tomcat для поддержки сеансов с помощью перезапуска сервера.

Как это можно сделать в Spring Boot со встроенным Tomcat?

Возможно, объект-менеджер может каким-то образом получить значение пустого пути свойства null?

4b9b3361

Ответ 1

Вы можете использовать TomcatContextCustomizer для доступа к диспетчеру и применения необходимой конфигурации:

@Bean
public EmbeddedServletContainerFactory servletContainer() {
    TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
    tomcat.addContextCustomizers(new TomcatContextCustomizer() {

        @Override
        public void customize(Context context) {
            if (context.getManager() instanceof StandardManager) {
                ((StandardManager) context.getManager()).setPathname("");
            }
        }
    });
    return tomcat;
}