Пул потоков сервлетов против пула экземпляров сервлетов - веб-контейнером

Я понимаю, что у веб-контейнеров, таких как jboss, есть параметр, указывающий количество потоков создаваемого сервлета, то есть максимальное количество потоков, которое контейнер может создать для запуска на одном экземпляре сервлета.

Мой вопрос, однако, заключается в том, есть ли способ указать количество экземпляров сервлета, который будет создан? Если да, то какова цель? Необходимость в этом может заключаться в обработке запросов, когда, скажем, поток или потоки, работающие на одном экземпляре, каким-то образом повреждают эти данные сервлета или уничтожают () их - в целях резервирования.

1 ответ

Решение

РЕДАКТИРОВАТЬ: Берегись! Начиная с спецификации 2.4 сервлета, интерфейс javax.servlet.SingleThreadModel устарел без прямой замены.

В спецификации неясно, должны ли контейнеры создавать несколько экземпляров одного и того же сервлета или всегда только один экземпляр.


Из спецификации сервлета 2.4 http://download.oracle.com/otndocs/jcp/servlet-2.4-fr-spec-oth-JSpec/

SRV.2.2 Количество экземпляров

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

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

Вы можете найти в документе более подробную информацию о однопоточной модели

Другие вопросы по тегам