Spring Boot: настройка встроенных контейнеров сервлетов

Общие параметры контейнера сервлета можно настроить с помощью свойств среды Spring. Обычно вы определяете свойства в вашем файле application.properties.

Общие настройки сервера включают в себя:

  • Сетевые настройки: порт прослушивания для входящих HTTP-запросов (server.port), адрес интерфейса для привязки к server.address и т.д.
  • Настройки session: является ли session постоянной (server.servlet.session.persistent), время ожидания session (server.servlet.session.timeout), местоположение данных session (server.servlet.session.store-dir) и session cookie конфигурация (server.servlet.session.cookie.*).
  • Управление ошибками: расположение страницы ошибки (server.error.path) и т. д.
  • SSL
  • HTTP-сжатие

Spring Boot старается максимально раскрыть общие настройки, но это не всегда возможно. Для этих случаев выделенные пространства имен предлагают индивидуальные настройки сервера. Например, журналы доступа могут быть настроены с определенными функциями встроенного контейнера сервлета.

Программная настройка

Если вам нужно программно настроить встроенный контейнер сервлетов, вы можете зарегистрировать bean-компонент Spring, который реализует интерфейс WebServerFactoryCustomizer. WebServerFactoryCustomizer обеспечивает доступ к ConfigurableServletWebServerFactory, который включает в себя многочисленные методы установки параметров настройки. В следующем примере показана программная настройка порта:

import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
import org.springframework.stereotype.Component;

@Component
public class CustomizationBean implements WebServerFactoryCustomizer {

    @Override
    public void customize(ConfigurableServletWebServerFactory server) {
        server.setPort(9000);
    }

}

TomcatServletWebServerFactory, JettyServletWebServerFactory и UndertowServletWebServerFactory являются выделенными вариантами ConfigurableServletWebServerFactory, которые имеют дополнительные методы установки настройки для Tomcat, Jetty и Undertow соответственно.

Настройка ConfigurableServletWebServerFactory напрямую

Если предшествующие методы настройки слишком ограничены, вы можете зарегистрировать bean-компонент TomcatServletWebServerFactory, JettyServletWebServerFactory или UndertowServletWebServerFactory самостоятельно.

@Bean
public ConfigurableServletWebServerFactory webServerFactory() {
    TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
    factory.setPort(9000);
    factory.setSessionTimeout(10, TimeUnit.MINUTES);
    factory.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/notfound.html"));
    return factory;
}

Установщики предоставляются для многих вариантов конфигурации. Предусмотрено несколько “hooks” protected методов, если вам нужно сделать что-то более экзотическое.

Ограничения JSP

При запуске приложения Spring Boot, которое использует встроенный контейнер сервлета (и упакован в виде исполняемого архива), существуют некоторые ограничения в поддержке JSP.

  • С Jetty и Tomcat это должно работать, если вы используете упаковку для war пакетов. Исполняемый war будет работать при запуске с java -jar, а также будет развернут в любом стандартном контейнере. JSP не поддерживаются при использовании исполняемого файла jar.
  • Undertow не поддерживает JSP.
  • Создание пользовательской страницы error.jsp не переопределяет представление по умолчанию для обработки ошибок. Вместо этого следует использовать пользовательские страницы ошибок.

Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки