Рубрики
Без рубрики

Развертывание Spring Boot WAR на сервере Tomcat

Узнайте, как настроить приложение Spring Boot для развертывания на сервере Tomcat.

Автор оригинала: baeldung.

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 Collection sayHello() {
        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, нам необходимо выполнить следующие действия:

  1. Загрузите Apache Tomcat и распакуйте его в папку tomcat
  2. Скопируйте наш файл WAR из target/spring-boot-tomcat.war в папку tomcat/webapps/
  3. Из терминала перейдите в папку tomcat/bin и выполните

    1. catalina.bat run (в Windows)
    2. catalina.sh выполнить (в системах на базе Unix)
  4. Перейти к http://localhost:8080/spring-boot-tomcat/hello

Это была быстрая настройка Tomcat, пожалуйста, ознакомьтесь с руководством по установке Tomcat для получения полного руководства по установке. Существуют также дополнительные способы развертывания файла WAR в Tomcat .

5. Заключение

В этом кратком руководстве мы создали простое приложение Spring Boot и превратили его в действительное приложение WAR, которое можно развернуть на сервере Tomcat.

Как всегда, полный исходный код примеров доступен на GitHub .