Жизненный цикл четко определен и доступен через методы жизненного цикла, представленные в методах сервлета init, service и destroy.
И, несмотря на то, что еще здесь сказано, это все, на что вы можете рассчитывать из спецификации. По сути, вы получаете эти три метода и гарантию, что сервлеты не являются поточно-ориентированными. Чтобы к одному сервлету МОЖНО одновременно обращаться по одному или нескольким запросам.
В спецификации нет ничего, что ограничивало бы сервлет одним экземпляром контейнера, если контейнер решит, он может получить запрос, создать сервлет, вызвать его init, затем service, затем уничтожить методы и освободить его. для сбора мусора.
Отдельные контейнеры имеют потенциально разные реализации.
Большинство контейнеров создают один экземпляр. Но спецификация не гарантирует этого, поэтому на нее не следует полагаться.
Также рассмотрим что-то вроде Google App Engine. GAE ОЧЕНЬ агрессивен, постоянно истекает и закрывает целые веб-приложения, которые не получают трафик. Если у вас небольшой сайт, вы можете ожидать, что все приложение запустится, запустит все его службы, запустит любые сервлеты загрузки при запуске, выполнит запрос, а затем закроет все. Таким образом, в GAE крайне важно, чтобы у вас был очень быстрый запуск приложений, чтобы сохранить какое-либо подобие производительности.
Итак, просто, на что вы можете рассчитывать, так это в спецификации. Отдельные контейнеры могут предлагать различное время выполнения.