2016-11-16 3 views
8

В моем случае рассмотрим простой сервис RESTful, созданный и настроенный с помощью Spring Boot. Эта служба связывается с базой данных (например, Postgres).Приложение Spring boot vs. .war, развернутое на Tomcat/Jetty

Что разница между:

  • Построение Spring загрузки .jar файл и запустить его на своем удаленном хосте с помощью общественного java -jar myservice.jar?

или

  • пакет его .war файл и развернуть его на Tomcat/Jetty?

Первый вариант кажется намного проще, вам просто нужно запустить .jar. Во втором варианте вам нужно создать экземпляр Tomcat, запустить его, а затем развернуть файл .war. Есть ли другая разница? Любые плюсы и минусы обоих методов?

ответ

9

Упаковать его в .war файл и развернуть его на Tomcat/Jetty?

Не следует сделать это, если это возможно. Причина: со встроенным tomcat (или любым другим сервером) гораздо проще построить архитектуру микросервисов.

Как Джош Лонг однажды сказал в одном из своих переговоров в Спринге IO “make Jar, not War”

С другой стороны, если у вас есть существующая инфраструктура там с сервлет и уже есть несколько application.wars работает в тех контейнеры сервлетов, и все, что вам нужно сделать, это просто упаковать свое приложение в качестве военного файла и передать его команде разработчиков (или, скорее, вам нужно просто повторно использовать существующую инфраструктуру), то это совсем другая история (но, Techworld уже отходя от этой практики).

Опять же, в духе микросервисов, в духе того, для чего предназначен весенний ботинок, я бы посоветовал вам использовать встроенный сервер и сделать исполняемый файл jar, а не традиционным развертыванием.

+0

Можете ли вы сказать что-то еще о причине, о которой вы говорили. Если я хорошо вас понимаю, вы говорите противоположное тому, что упоминалось выше @dahrens. – ilovkatie

+0

Нет .. что, по словам дахренов, совсем не противоречит тому, что я сказал. –

1

Как указано на product page, эти банки включают контейнер сервлетов и будут запускать его непосредственно.

Вставить Tomcat, Jetty или Undertow напрямую (нет необходимости развернуть WAR файлы)

Если вы планируете запустить приложение на одном хосте с ничего рядом с ним (докер?) Это может быть хорошая возможность - если ваш хост содержит другие приложения, подход к развертыванию войн будет более интересным, так как вы можете иметь эти контейнеры сервлетов только один раз на своем хосте.