Встроенный и не встроенный Java-сервер

Я работаю над проектом Java и использую сервер Tomcat для локального тестирования. Однако я собираюсь подтолкнуть к Heroku, и я нашел статью, в которой предлагается использовать "встроенный" Tomcat.

Я посмотрел вокруг, чтобы понять, что именно "встроенный" означает в контексте Java-сервера, но похоже, что все в Google уже понимают, что означает "встроенный". Я не. В чем разница между развертыванием "обычного" сервера Tomcat и "встроенным"?

Ответ 1

"Встроенный" означает, что вы программируете корабли с сервером внутри него, а не с веб-приложением, которое развертывается на внешний сервер.

С встроенным сервером ваше приложение упаковано с выбранным сервером и отвечает за запуск и управление сервером.

С точки зрения пользователя разница составляет:

  • Приложение со встроенным сервером выглядит как обычная Java-программа. Вы просто запускаете его и что это.
  • Обычное веб-приложение обычно представляет собой архив war, который необходимо развернуть на каком-то сервере.

Встраивание сервера очень полезно для целей тестирования, где вы можете запускать или останавливать сервер по своему усмотрению во время теста.

Ответ 2

С здесь, это когда вы "встраиваете" кота в свое приложение. То есть вы несете ответственность за запуск и остановку кота. Это противоположно обычной работе контейнера, но вы можете найти ее полезной для быстрого развертывания и тестирования.

Ответ 3

Традиционно для размещения веб-приложений на Java вы устанавливали один экземпляр Tomcat на свой сервер и помещали все файлы WAR на этот один сервер. Может быть, вы собрали несколько экземпляров Tomcat вместе, но идея та же. Был один сервер Tomcat, и на нем были развернуты все ваши веб-приложения Java.

Традиционный и встроенный Tomcat

В мире микросервисов все немного по-другому. Вместо одного сервера Tomcat, на котором размещено множество веб-приложений, с микросервисами, мы берем одно веб-приложение, разворачиваем одно веб-приложение на одном сервере tomcat, а затем архивируем все это в файл zip, jar или war, который выполняется через Команда Java. Итак, теперь у нас есть один исполняемый файл, который содержит все необходимое для запуска веб-приложения, включая сервер Tomcat.

Распределение на основе контейнеров

Некоторые продукты поставляют весь свой продукт на встроенном механизме сервлетов. Вы можете получить Jenkins в одном исполняемом файле WAR, хотя я считаю, что они встраивают Jetty, а не Tomcat, но это та же идея. Но с меньшей вероятностью, чем распространение jar/war, люди упаковывают все это в докер-контейнер и разворачивают все это в Kubernetes, Heruku или где-либо еще.

Так что идея вроде встроенного сервера tomcat.

Maven и встроенный Tomcat

Один из самых простых способов создания встроенного сервера Tomcat - это Apache Maven. Вот пример сборки Maven, которая не только собирает веб-приложение, но также загружает tomcat и упаковывает все это в исполняемый JAR файл:

Embedded Tomcat with Maven