Каждый запрос получает доступ к одному и тому же объекту сервлета? - программирование

Каждый запрос получает доступ к одному и тому же объекту сервлета?

Поддерживает ли каждый HTTP-запрос один и тот же объект сервлета, но в другом потоке? или создает новый поток и новый экземпляр сервлета?

4b9b3361

Ответ 1

Контейнер будет использовать тот же экземпляр сервлета, если ваш сервлет не реализует SingleThreadModel. В противном случае нет гарантии, что тот же объект Servlet будет удален. Контейнер может создавать дополнительные экземпляры сервлетов, если он сочтет это необходимым. Но запросы поступают на разные темы, не обязательно созданные (как упоминал Санджай).

Из спецификации Servlet 3.0:

Для сервлета, не размещенного в распределенной среде (по умолчанию), сервлет контейнер должен использовать только один экземпляр для объявления сервлета. Однако для сервлета реализации интерфейса SingleThreadModel, контейнер сервлета может создавать экземпляры нескольких экземпляров для обработки большой нагрузки запроса и сериализации запросов к конкретному экземпляру.

...

Обычно веб-контейнер обрабатывает одновременные запросы к одному и тому же сервлету одновременное выполнение метода обслуживания для разных потоков.

Ответ 2

Каждый HTTP-запрос создает новый поток, но обращается к тому же экземпляру сервлета.

EDIT: в случае одного сервера node у вас будет тот же экземпляр сервлета на node. В случае балансировки нагрузки/на многих серверах у вас обычно будет один экземпляр для каждой виртуальной машины Java.