Сервер 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.По большей части это детали реализации, которые вам не нужны.