Как продолжить обслуживание запросов в контейнере сервлетов Java, пока балансировщик нагрузки удаляет сервер из пула на основе проверки работоспособности?

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

Моя попытка: contextDestroyed в ServletContextListener

Я задерживаю закрытие моего веб-приложения, как это в ServletContextListener:

  override def contextDestroyed(sce: ServletContextEvent) {
    logger.info(s"contextDestroyed, suspend for $ShutdownDelayMS ms")
    Thread.sleep(ShutdownDelayMS)
    logger.info("Suspend finished, shutting down")

  }

Я вижу логи и задержку между ними, но как только contextDestroyed называется, сервер больше не будет обслуживать запросы, и в stdout я сразу вижу:

[INFO] Stopped ServerConnector@19877453{HTTP/1.1}{0.0.0.0:8080}

Я неправильно понимаю, как contextDestroyed должен работать? Причал 9.2.9.v20150224, javax.servlet 3.0.1.

Документы для contextDestroyed сказать:

Получает уведомление о том, что ServletContext собирается завершить работу. Все сервлеты и фильтры будут уничтожены до того, как какой-либо ServletContextListeners получит уведомление об уничтожении контекста.

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

0 ответов

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