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);
}