in server/src/main/java/org/apache/calcite/avatica/server/HttpServer.java [217:270]
protected void internalStart() {
if (server != null) {
throw new RuntimeException("Server is already started");
}
final SubjectPreservingPrivilegedThreadFactory subjectPreservingPrivilegedThreadFactory =
new SubjectPreservingPrivilegedThreadFactory();
//The constructor parameters are the Jetty defaults, except for the ThreadFactory
final QueuedThreadPool threadPool = new QueuedThreadPool(200, 8, 60000, -1, null, null,
subjectPreservingPrivilegedThreadFactory);
server = new Server(threadPool);
server.manage(threadPool);
ServerConnector serverConnector = null;
HandlerList handlerList = null;
if (null != this.config && AuthenticationType.CUSTOM == config.getAuthenticationType()) {
if (null != handler || null != sslFactory) {
throw new IllegalStateException("Handlers and SSLFactory cannot be configured with "
+ "the HTTPServer Builder when using CUSTOM Authentication Type.");
}
} else {
serverConnector = configureServerConnector();
handlerList = configureHandlers();
}
// Apply server customizers
for (ServerCustomizer<Server> customizer : this.serverCustomizers) {
LOG.info("Customizing server with customizer: " + customizer.getClass());
customizer.customize(server);
}
try {
server.start();
} catch (Exception e) {
throw new RuntimeException(e);
}
if (null != serverConnector && null != handlerList) {
port = serverConnector.getLocalPort();
LOG.info("Service listening on port {}.", getPort());
// Set the information about the address for this server
try {
this.handler.setServerRpcMetadata(createRpcServerMetadata(serverConnector));
} catch (UnknownHostException e) {
// Failed to do the DNS lookup, bail out.
throw new RuntimeException(e);
}
} else if (0 == server.getConnectors().length) {
String error = "No server connectors have been configured for this Avatica server";
LOG.error(error);
throw new RuntimeException(error);
}
}