public void start() {
        long startNanos = System.nanoTime();
        logger.info("Zuul Sample: starting up.");
        int exitCode = 0;

        Server server = null;

        try {
            ConfigurationManager.loadCascadedPropertiesFromResources("application");

            AccessLogPublisher accessLogPublisher = new AccessLogPublisher(
                    "ACCESS", (channel, httpRequest) -> ClientRequestReceiver.getRequestFromChannel(channel)
                            .getContext()
                            .getUUID());

            ApplicationInfoManager instance = new ApplicationInfoManager(null, null, null);

            PushConnectionRegistry pushConnectionRegistry = new PushConnectionRegistry();
            SamplePushMessageSenderInitializer pushMessageSenderInitializer =
                    new SamplePushMessageSenderInitializer(pushConnectionRegistry);
            DefaultRegistry registry = new DefaultRegistry();
            SampleServerStartup serverStartup = new SampleServerStartup(
                    new ServerStatusManager(instance) {
                        @Override
                        public void localStatus(InstanceStatus status) {}
                    },
                    new StaticFilterLoader(new SampleFilterFactory(), FILTER_TYPES),
                    new ZuulSessionContextDecorator(new BasicNettyOriginManager(registry)),
                    new BasicFilterUsageNotifier(registry),
                    new BasicRequestCompleteHandler(),
                    registry,
                    new DirectMemoryMonitor(registry),
                    new EventLoopGroupMetrics(registry),
                    null,
                    instance,
                    accessLogPublisher,
                    pushConnectionRegistry,
                    pushMessageSenderInitializer);
            serverStartup.init();
            server = serverStartup.server();

            server.start();
            long startupDuration = System.nanoTime() - startNanos;
            logger.info(
                    "Zuul Sample: finished startup. Duration = {}ms", TimeUnit.NANOSECONDS.toMillis(startupDuration));
            server.awaitTermination();
        } catch (Throwable t) {
            // Don't use logger here, as we may be shutting down the JVM and the logs won't be printed.
            t.printStackTrace();
            System.err.println("###############");
            System.err.println("Zuul Sample: initialization failed. Forcing shutdown now.");
            System.err.println("###############");
            exitCode = 1;
        } finally {
            // server shutdown
            if (server != null) {
                server.stop();
            }

            System.exit(exitCode);
        }
    }
Bootstrap
<p>
Author: Arthur Gonigberg
Date: November 20, 2017
zuul-sample/src/main/java/com/netflix/zuul/sample/Bootstrap.java