<servlet>
<servlet-name>FooServlet</servlet-name>
<servlet-class>foo.FooServlet</servlet-class>
<init-param>
<param-name>foo</param-name>
<param-value>bar</param-value>
</init-param>
</servlet>
Поскольку каждый сервлет имеет свою собственную конфигурацию , для каждого определения сервлета должен быть хотя бы один экземпляр сервлета.
Спецификация Servlet 3.0 гласит:
Для сервлета, не размещенного в распределенной среде (по умолчанию),
контейнер сервлета должен использовать только один экземпляр на сервлет
декларация . Однако для сервлета, реализующего
SingleThreadModel
интерфейс, контейнер сервлета может быть создан
несколько экземпляров для обработки тяжелой загрузки запросов и сериализации
запросы к конкретному экземпляру.
В случае, когда сервлет был развернут как часть приложения
помеченный в дескрипторе развертывания как распространяемый, контейнер может
иметь только один экземпляр на объявление сервлета на виртуальную Java
Машина (JVM ™). Однако, если сервлет в распространяемом приложении
реализует интерфейс SingleThreadModel
, контейнер может
создать несколько экземпляров этого сервлета в каждой JVM
контейнер.
SingleThreadModel
следует избегать.
Предполагая, что в нераспределенной среде фрагмент размещенного дескриптора приведет к двум экземплярам сервлета.