public synchronized void initialize()

in server-common/src/main/java/org/apache/gravitino/server/web/JettyServer.java [84:179]


  public synchronized void initialize(
      JettyServerConfig serverConfig, String serverName, boolean shouldEnableUI) {
    this.serverConfig = serverConfig;
    this.serverName = serverName;

    ThreadPool threadPool =
        createThreadPool(
            serverConfig.getMinThreads(),
            serverConfig.getMaxThreads(),
            serverConfig.getThreadPoolWorkQueueSize());

    // Create and config Jetty Server
    server = new Server(threadPool);
    server.setStopAtShutdown(true);
    server.setStopTimeout(serverConfig.getStopTimeout());

    // Set error handler for Jetty Server
    ErrorHandler errorHandler = new ErrorHandler();
    errorHandler.setShowStacks(true);
    errorHandler.setServer(server);
    server.addBean(errorHandler);

    if (serverConfig.isEnableHttps()) {
      // Create and set Https ServerConnector
      Preconditions.checkArgument(
          StringUtils.isNotBlank(serverConfig.getKeyStorePath()),
          "If enables https, must set keyStorePath");
      Preconditions.checkArgument(
          StringUtils.isNotBlank(serverConfig.getKeyStorePassword()),
          "If enables https, must set keyStorePassword");
      Preconditions.checkArgument(
          StringUtils.isNotBlank(serverConfig.getManagerPassword()),
          "If enables https, must set managerPassword");
      if (serverConfig.isEnableClientAuth()) {
        Preconditions.checkArgument(
            StringUtils.isNotBlank(serverConfig.getTrustStorePath()),
            "If enables the authentication of the client, must set trustStorePath");
        Preconditions.checkArgument(
            StringUtils.isNotBlank(serverConfig.getTrustStorePassword()),
            "If enables the authentication of the client, must set trustStorePassword");
      }
      ServerConnector httpsConnector =
          createHttpsServerConnector(
              server,
              serverConfig.getRequestHeaderSize(),
              serverConfig.getResponseHeaderSize(),
              serverConfig.getHost(),
              serverConfig.getHttpsPort(),
              serverConfig.getIdleTimeout(),
              serverConfig.getKeyStorePath(),
              serverConfig.getKeyStorePassword(),
              serverConfig.getManagerPassword(),
              serverConfig.getKeyStoreType(),
              serverConfig.getTlsProtocol(),
              serverConfig.getSupportedAlgorithms(),
              serverConfig.isEnableClientAuth(),
              serverConfig.getTrustStorePath(),
              serverConfig.getTrustStorePassword(),
              serverConfig.getTrustStoreType());
      server.addConnector(httpsConnector);
    } else {
      // Create and set Http ServerConnector
      ServerConnector httpConnector =
          createHttpServerConnector(
              server,
              serverConfig.getRequestHeaderSize(),
              serverConfig.getResponseHeaderSize(),
              serverConfig.getHost(),
              serverConfig.getHttpPort(),
              serverConfig.getIdleTimeout());
      server.addConnector(httpConnector);
    }

    // Initialize ServletContextHandler or WebAppContext
    if (shouldEnableUI) {
      initializeWebAppServletContextHandler();
    } else {
      initializeBasicServletContextHandler();
    }

    MetricsSystem metricsSystem = GravitinoEnv.getInstance().metricsSystem();
    // Metrics System could be null in UT.
    if (metricsSystem != null) {
      MetricRegistry metricRegistry = metricsSystem.getMetricRegistry();
      servletContextHandler.setAttribute(
          "com.codahale.metrics.servlets.MetricsServlet.registry", metricRegistry);
      servletContextHandler.addServlet(MetricsServlet.class, "/metrics");

      servletContextHandler.addServlet(
          new ServletHolder(metricsSystem.getPrometheusServlet()), "/prometheus/metrics");
    }

    HandlerCollection handlers = new HandlerCollection();
    handlers.addHandler(servletContextHandler);
    server.setHandler(handlers);
  }