Поддерживает ли каждый HTTP-запрос один и тот же объект сервлета, но в другом потоке? или создает новый поток и новый экземпляр сервлета?
Каждый запрос получает доступ к одному и тому же объекту сервлета?
Ответ 1
Контейнер будет использовать тот же экземпляр сервлета, если ваш сервлет не реализует SingleThreadModel
.
В противном случае нет гарантии, что тот же объект Servlet
будет удален. Контейнер может создавать дополнительные экземпляры сервлетов, если он сочтет это необходимым. Но запросы поступают на разные темы, не обязательно созданные (как упоминал Санджай).
Из спецификации Servlet 3.0:
Для сервлета, не размещенного в распределенной среде (по умолчанию), сервлет контейнер должен использовать только один экземпляр для объявления сервлета. Однако для сервлета реализации интерфейса SingleThreadModel, контейнер сервлета может создавать экземпляры нескольких экземпляров для обработки большой нагрузки запроса и сериализации запросов к конкретному экземпляру.
...
Обычно веб-контейнер обрабатывает одновременные запросы к одному и тому же сервлету одновременное выполнение метода обслуживания для разных потоков.
Ответ 2
Каждый HTTP-запрос создает новый поток, но обращается к тому же экземпляру сервлета.
EDIT: в случае одного сервера node у вас будет тот же экземпляр сервлета на node. В случае балансировки нагрузки/на многих серверах у вас обычно будет один экземпляр для каждой виртуальной машины Java.