Class GracefulShutdownHandler

  • All Implemented Interfaces:
    HttpHandler

    public class GracefulShutdownHandler
    extends java.lang.Object
    implements HttpHandler
    Handler that allows for graceful server shutdown. Basically it provides a way to prevent the server from accepting new requests, and wait for existing requests to complete.

    The handler itself does not shut anything down.

    Import: The thread safety semantics of the handler are very important. Don't touch anything unless you know what you are doing.

    Author:
    Stuart Douglas
    • Constructor Detail

      • GracefulShutdownHandler

        public GracefulShutdownHandler​(HttpHandler next)
    • Method Detail

      • handleRequest

        public void handleRequest​(HttpServerExchange exchange)
                           throws java.lang.Exception
        Description copied from interface: HttpHandler
        Handle the request.
        Specified by:
        handleRequest in interface HttpHandler
        Parameters:
        exchange - the HTTP request/response exchange
        Throws:
        java.lang.Exception
      • shutdown

        public void shutdown()
      • start

        public void start()
      • awaitShutdown

        public void awaitShutdown()
                           throws java.lang.InterruptedException
        Waits for the handler to shutdown.
        Throws:
        java.lang.InterruptedException
      • awaitShutdown

        public boolean awaitShutdown​(long millis)
                              throws java.lang.InterruptedException
        Waits a set length of time for the handler to shut down
        Parameters:
        millis - The length of time
        Returns:
        true If the handler successfully shut down
        Throws:
        java.lang.InterruptedException
      • addShutdownListener

        public void addShutdownListener​(GracefulShutdownHandler.ShutdownListener shutdownListener)
        Adds a shutdown listener that will be invoked when all requests have finished. If all requests have already been finished the listener will be invoked immediately.
        Parameters:
        shutdownListener - The shutdown listener