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
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 не переопределяет представление по умолчанию для обработки ошибок. Вместо этого следует использовать пользовательские страницы ошибок.
Читайте также:
- Spring Boot: поддержка встроенных контейнеров сервлетов
- Spring Boot: инициализация контекста сервлета
- Spring Boot стартеры
Комментарии
Отправить комментарий