use of com.kixeye.chassis.transport.shared.HealthServlet in project chassis by Kixeye.
the class HttpTransportConfiguration method httpServer.
@Bean(initMethod = "start", destroyMethod = "stop")
@Order(0)
public Server httpServer(@Value("${http.enabled:false}") boolean httpEnabled, @Value("${http.hostname:}") String httpHostname, @Value("${http.port:-1}") int httpPort, @Value("${https.enabled:false}") boolean httpsEnabled, @Value("${https.hostname:}") String httpsHostname, @Value("${https.port:-1}") int httpsPort, @Value("${https.selfSigned:false}") boolean selfSigned, @Value("${https.mutualSsl:false}") boolean mutualSsl, @Value("${https.keyStorePath:}") String keyStorePath, @Value("${https.keyStoreData:}") String keyStoreData, @Value("${https.keyStorePassword:}") String keyStorePassword, @Value("${https.keyManagerPassword:}") String keyManagerPassword, @Value("${https.trustStorePath:}") String trustStorePath, @Value("${https.trustStoreData:}") String trustStoreData, @Value("${https.trustStorePassword:}") String trustStorePassword, @Value("${https.excludedCipherSuites:}") String[] excludedCipherSuites, ConfigurableWebApplicationContext webApplicationContext) throws Exception {
// set up servlets
ServletContextHandler context = servletContextHandler();
// create a new child application context
AnnotationConfigWebApplicationContext childApplicationContext = (AnnotationConfigWebApplicationContext) transportWebMvcContext(webApplicationContext, context).getContext();
// register swagger
childApplicationContext.getBean(SwaggerRegistry.class).registerSwagger(context, getObjectMappers(webApplicationContext));
// configure the spring mvc dispatcher
DispatcherServlet dispatcher = new DispatcherServlet(childApplicationContext);
// enable gzip
context.addFilter(GzipFilter.class, "/*", null);
// map application servlets
context.addServlet(new ServletHolder(dispatcher), "/");
if (healthCheckRegistry != null) {
context.addServlet(new ServletHolder(new HealthServlet(healthCheckRegistry)), "/healthcheck");
}
// create the server
Server server;
if (metricRegistry == null || !monitorThreadpool) {
server = new Server();
server.setHandler(context);
} else {
server = new Server(new InstrumentedQueuedThreadPool(metricRegistry));
InstrumentedHandler instrumented = new InstrumentedHandler(metricRegistry);
instrumented.setHandler(context);
server.setHandler(instrumented);
}
// set up connectors
if (httpEnabled) {
InetSocketAddress address = StringUtils.isBlank(httpHostname) ? new InetSocketAddress(httpPort) : new InetSocketAddress(httpHostname, httpPort);
JettyConnectorRegistry.registerHttpConnector(server, address);
}
if (httpsEnabled) {
InetSocketAddress address = StringUtils.isBlank(httpsHostname) ? new InetSocketAddress(httpsPort) : new InetSocketAddress(httpsHostname, httpsPort);
JettyConnectorRegistry.registerHttpsConnector(server, address, selfSigned, mutualSsl, keyStorePath, keyStoreData, keyStorePassword, keyManagerPassword, trustStorePath, trustStoreData, trustStorePassword, excludedCipherSuites);
}
return server;
}
use of com.kixeye.chassis.transport.shared.HealthServlet in project chassis by Kixeye.
the class AdminTransportConfiguration method adminServer.
@Bean(initMethod = "start", destroyMethod = "stop")
@Order(0)
public Server adminServer(@Value("${admin.hostname}") String hostname, @Value("${admin.port}") int port) {
// set up servlets
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.NO_SESSIONS | ServletContextHandler.NO_SECURITY);
context.setErrorHandler(null);
context.setWelcomeFiles(new String[] { "/" });
// enable gzip
context.addFilter(GzipFilter.class, "/*", null);
// add common admin servlets
context.addServlet(new ServletHolder(new HealthServlet(healthCheckRegistry)), "/healthcheck");
context.addServlet(new ServletHolder(new ClasspathResourceServlet("com/kixeye/chassis/transport/admin", "/admin/", "index.html")), "/admin/*");
context.addServlet(new ServletHolder(new PropertiesServlet()), "/admin/properties");
context.addServlet(new ServletHolder(new ClasspathDumpServlet()), "/admin/classpath");
// add websocket servlets if WebSockets have been initialized
if (mappingRegistry != null && messageRegistry != null) {
context.addServlet(new ServletHolder(new ProtobufMessagesDocumentationServlet(appName, mappingRegistry, messageRegistry)), "/schema/messages/protobuf");
context.addServlet(new ServletHolder(new ProtobufEnvelopeDocumentationServlet()), "/schema/envelope/protobuf");
}
// add metric servlets if Metric has been initialized
if (metricRegistry != null && healthCheckRegistry != null) {
context.getServletContext().setAttribute(MetricsServlet.METRICS_REGISTRY, metricRegistry);
context.getServletContext().setAttribute(HealthCheckServlet.HEALTH_CHECK_REGISTRY, healthCheckRegistry);
ServletHolder holder = new ServletHolder(new AdminServlet());
holder.setInitParameter("service-name", System.getProperty("app.name"));
context.addServlet(holder, "/metrics/*");
}
// create the server
InetSocketAddress address = StringUtils.isBlank(hostname) ? new InetSocketAddress(port) : new InetSocketAddress(hostname, port);
Server server = new Server();
JettyConnectorRegistry.registerHttpConnector(server, address);
server.setHandler(context);
return server;
}
Aggregations