Как работают процесс приложения и процесс сервера?
Здравствуйте, у меня такой теоретический вопрос:
Spring boot приложение имеет под собой встроенный tomcat сервер, на котором оно запускается,
так же можно запустить свой tomcat сервер и задеплоить на него несколько war архивов с разными приложениями допустим на гольных сервлетах.
Каждое спринговое приложение запускается на своем порту и имеет свой отдельный процесс, и если запустить несколько приложений, то будет несколько процессов приложений и несколько процессов запущенных серверов томката?
А приложения запущенные на одном сервере, как во втором случае, идут как один процесс и имеют один порт? Или это тоже разные процессы, но один процесс сервера?
For servlet stack applications, the spring-boot-starter-web includes Tomcat by including spring-boot-starter-tomcat, but you can use spring-boot-starter-jetty or spring-boot-starter-undertow instead.
Василий Банников, ну да, он как бы самостоятельный сервлет-контейнер. Но также в виде embedded поставляется вместе с пакетом Spring Web и при необходимости можно его исключить из фреймворка или заменить на другой.
На одном порту может висеть только один процесс (исключения это внедрение в стек TCP/IP, как это делают фаерволы, но там уже другая история)
Соответственно или ты запускаешь несколько war приложений внутри сервера приложений tomcat, и разруливаешь их или по портам или по ендпоинтам, но все эти порты принадлежат одному tomcat-у, или каждый спрингбут запускает свой (только вряд ли tomcat имеет смысл в таком случае использовать, проще легковесный jetty), и уже каждый занимает свой порт
То есть одно приложение может слушать несколько портов.
Но каждый один порт может слушаться только одним приложением.
я просто пытаюсь понять отличие подхода с war на одном tomcat от бутового embedded tomcat, тоесть в случае с war, сколько архивов, столько и процессов, но сервер отожрет ресурсы только один раз с запасом при старте, а то что туда будут докидывать, на ресурсы не повлияет?