Если несколько служб работают с одним сервером Tomcat, как это реализовано? - PullRequest
0 голосов
/ 07 февраля 2019

Каждый сервис получает отдельный процесс?Все ли сделано в одной и той же JVM?Есть ли способ узнать, сколько памяти выделено для каждой службы?

РЕДАКТИРОВАТЬ: Если один процесс, Tomcat запускает отдельные службы в разных потоках?

1 Ответ

0 голосов
/ 07 февраля 2019

Сервер Tomcat работает как один процесс.Когда он принимает новое соединение, он выделяет поток для обработки этого соединения от начала до конца.

Каждое веб-приложение (WAR) развертывается с использованием уникального контекста root : так что если у вас естьURL-адреса http://localhost:8080/app1 и http://localhost:8080/app2, вы знаете, что это разные приложения, основанные на корне контекста.

В каждом веб-приложении Tomcat поддерживает таблицу маршрутизации, в которой указано, какой класс следует вызывать для данного URL-адреса.Если вы используете сервлеты, это может означать, что /mypage направляется на com.example.MyPageServlet, а /myotherpage направляется на com.example.MyOtherPageServlet.

Каждый класс сервлета является экземпляром объекта.Итак, первое, что делает Tomcat после принятия запроса, это выясняет, к какому веб-приложению оно относится, на основе корневого контекста и какой объект сервлета в этом веб-приложении должен обрабатывать запрос.Затем он вызывает метод службы для этого объекта.

Чтобы сохранить независимость веб-приложений, каждое приложение загружается с использованием собственного загрузчика классов .Это означает, что экземпляр app1 MyPageServlet будет реализовывать com.example.MyHelperClass, который был связан с app1 WAR, а не тот, который связан с app2 WAR.По большей части это детали реализации, которые вам не нужны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...