У каждого сервлета один и тот же жизненный цикл:

  • Сервер загружает и инициализирует сервлет
  • Сервлет никого не обслуживает или обслуживает одного и более клиентов
  • Сервер удаляет сервлет (некоторые сервера делают это, только когда их выключают)

Жизненный цикл сервлета

Инициализация сервлета

Когда сервер загружает сервлет, сервер запускает метод сервлета init. Инициализация выполняется, прежде чем сервлет начнет обрабатывать запросы клиентов, и прежде чем сервлет будет уничтожен.

И хотя сервлеты выполняются на много-потокотоковых серверах, у сервлета во время инициализации нет одновременно выполняющихся потоков. Сервер вызывает метод init один раз, затем сервер загрузит сервлет, и больше метод init не вызывается до тех пор, пока сервер не перезагрузит сервлет. Сервер не может перезагрузить сервлет до тех пор, пока он не уничтожит его, используя метод destroy.

Взаимодействия с клиентами

После инициализации, сервлет готов к управлению запросами клиента. Эта часть жизненного цикла сервлета обсуждалась предыдущем уроке.

Уничтожение сервлета

Сервлет выполняется до тех пор, пока сервер не уничтожит его, например, по запросу системного администратора. Когда сервер уничтожает сервлет, сервер запускает метод сервлета destroy. Этот метод запускается один раз; сервер не будет запускать метод destroy опять, до тех пор, пока сервер не перезагрузит этот сервлет и не проинициализирует.

В момент, когда сервер вызывает метод destroy, другой поток может принимать запрос. Урок Управление сервисными потоками во время выключения сервлета расскажет вам, как произвести "чистое" выключение в случаях, когда могут выполняться "долгоиграющие" потоки запросов.