Обучение Java. Сервлеты

        

Управление сервисными потоками в момент выключения сервлета


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

Если у Вашего сервлета существуют потенциальные "долгоиграющие" сервисные запросы придерживайтесь следующих правил:

  • Следите за тем как много потоков запущено методом service. 
  • Обеспечьте чистое завершение метода destroy, уведомляя "долгоиграющие" процессы о закрытии и ждите их завершения. 
  • Обеспечить "долгоиграющие" процессы возможностью периодической проверки о закрытии сервлета, и в случае такой необходимости: останавливать работу, очищаться и возвращать значения.


  • Содержание раздела