1. введение
Spring Boot -это соглашение по конфигурации фреймворк, который позволяет нам настроить готовую к производству настройку проекта Spring, а Tomcat – один из самых популярных контейнеров сервлетов Java.
По умолчанию Spring Boot создает автономное Java-приложение, которое может работать как настольное приложение или быть настроено как системная служба, но существуют среды, в которых мы не можем установить новую службу или запустить приложение вручную.
В отличие от автономных приложений, Tomcat устанавливается как служба, которая может управлять несколькими приложениями в рамках одного процесса приложения, избегая необходимости в конкретной настройке для каждого приложения.
В этом руководстве мы создадим простое приложение Spring Boot и адаптируем его для работы в Tomcat.
2. Настройка приложения Spring Boot
Мы собираемся настроить простое веб-приложение Spring Boot, используя один из доступных шаблонов запуска:
org.springframework.boot spring-boot-starter-parent 2.4.0 org.springframework.boot spring-boot-starter-web
Нет необходимости в дополнительных конфигурациях помимо стандартных @SpringBootApplication , поскольку Spring Boot заботится о настройке по умолчанию.
Мы добавляем простую конечную точку REST, чтобы вернуть нам некоторое допустимое содержимое:
@RestController public class TomcatController { @GetMapping("/hello") public CollectionsayHello() { return IntStream.range(0, 10) .mapToObj(i -> "Hello number " + i) .collect(Collectors.toList()); } }
Теперь давайте выполним приложение с помощью mvn spring-boot:запустите и запустите браузер в http://localhost:8080/hello для проверки результатов.
3. Создание ВОЙНЫ весенней загрузки
Контейнеры сервлетов ожидают, что приложения будут соответствовать некоторым контрактам, которые будут развернуты. Для Tomcat контракт-это Servlet API 3.0 .
Чтобы наше приложение соответствовало этому контракту, мы должны внести некоторые небольшие изменения в исходный код.
Во-первых, нам нужно упаковать ВОЕННОЕ приложение вместо БАНКИ. Для этого мы меняем pom.xml со следующим содержанием:
war
Теперь давайте изменим окончательное имя файла WAR , чтобы избежать включения номеров версий:
${artifactId} ...
Затем мы добавим зависимость Tomcat:
org.springframework.boot spring-boot-starter-tomcat provided
Наконец, мы инициализируем контекст сервлета, требуемый Tomcat, реализуя SpringBootServletInitializer интерфейс :
@SpringBootApplication public class SpringBootTomcatApplication extends SpringBootServletInitializer { }
Чтобы создать наше развертываемое военное приложение Tomcat, мы выполняем чистый пакет mvn. После этого наш файл WAR генерируется в target/spring-boot-tomcat.war (предполагая, что Maven artifactId является “spring-boot-tomcat”).
Мы должны учитывать, что эта новая установка делает наше приложение Spring Boot неавтономным приложением (если вы хотите, чтобы оно снова работало в автономном режиме, удалите предоставленную область из зависимости tomcat).
4. Развертывание ВОЙНЫ в Tomcat
Чтобы наш файл WAR был развернут и запущен в Tomcat, нам необходимо выполнить следующие действия:
- Загрузите Apache Tomcat и распакуйте его в папку tomcat
- Скопируйте наш файл WAR из target/spring-boot-tomcat.war в папку tomcat/webapps/
Из терминала перейдите в папку tomcat/bin и выполните
- catalina.bat run (в Windows)
- catalina.sh выполнить (в системах на базе Unix)
- Перейти к http://localhost:8080/spring-boot-tomcat/hello
Это была быстрая настройка Tomcat, пожалуйста, ознакомьтесь с руководством по установке Tomcat для получения полного руководства по установке. Существуют также дополнительные способы развертывания файла WAR в Tomcat .
5. Заключение
В этом кратком руководстве мы создали простое приложение Spring Boot и превратили его в действительное приложение WAR, которое можно развернуть на сервере Tomcat.
Как всегда, полный исходный код примеров доступен на GitHub .