protected Handler addRequestLog(Server server, Handler handler, String name) { if (getRequestLogFactory().isEnabled()) { final RequestLogHandler requestLogHandler = new RequestLogHandler(); requestLogHandler.setRequestLog(getRequestLogFactory().build(name)); // server should own the request log's lifecycle since it's already started, // the handler might not become managed in case of an error which would leave // the request log stranded server.addBean(requestLogHandler.getRequestLog(), true); requestLogHandler.setHandler(handler); return requestLogHandler; } return handler; }
protected Server buildServer(LifecycleEnvironment lifecycle, ThreadPool threadPool) { final Server server = new Server(threadPool); server.addLifeCycleListener(buildSetUIDListener()); lifecycle.attach(server); final ErrorHandler errorHandler = new ErrorHandler(); errorHandler.setServer(server); errorHandler.setShowStacks(false); server.addBean(errorHandler); server.setStopAtShutdown(true); server.setStopTimeout(shutdownGracePeriod.toMilliseconds()); return server; }
protected Handler createAdminServlet(Server server, MutableServletContextHandler handler, MetricRegistry metrics, HealthCheckRegistry healthChecks) { configureSessionsAndSecurity(handler, server); handler.setServer(server); handler.getServletContext().setAttribute(MetricsServlet.METRICS_REGISTRY, metrics); handler.getServletContext().setAttribute(HealthCheckServlet.HEALTH_CHECK_REGISTRY, healthChecks); handler.addServlet(new NonblockingServletHolder(new AdminServlet()), "/*"); final String allowedMethodsParam = allowedMethods.stream() .collect(Collectors.joining(",")); handler.addFilter(AllowedMethodsFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST)) .setInitParameter(AllowedMethodsFilter.ALLOWED_METHODS_PARAM, allowedMethodsParam); return handler; }
protected void configureHystrix(T configuration, Environment environment) { final ServerFactory serverFactory = configuration.getServerFactory(); final Duration shutdownGracePeriod = (serverFactory instanceof AbstractServerFactory) ? ((AbstractServerFactory) serverFactory).getShutdownGracePeriod() : Duration.seconds(30L); environment.lifecycle().manage(new ManagedHystrix(shutdownGracePeriod)); }
@SuppressWarnings("unchecked") public THIS overrideShutdownGracePeriod(Duration d) { serverFactory().setShutdownGracePeriod(d); return (THIS) this; }
@SuppressWarnings("unchecked") public THIS overrideGZIPEnabled(boolean state) { serverFactory().getGzipFilterFactory().setEnabled(state); return (THIS) this; }
/** * Determines the Jersey Root Path by pulling it from the {@link AbstractServerFactory}. If the value cannot be * found, then the default value of {@code /*} is used instead. */ private static String getJerseyRootPath(WebSecurityConfigurable configuration) { String rootPath = "/*"; if (configuration instanceof Configuration) { Configuration dwConfig = (Configuration) configuration; if (dwConfig.getServerFactory() instanceof AbstractServerFactory) { AbstractServerFactory abstractServerFactory = (AbstractServerFactory) dwConfig.getServerFactory(); Optional<String> optionalRootPath = abstractServerFactory.getJerseyRootPath(); if (optionalRootPath.isPresent()) { rootPath = optionalRootPath.get(); } } } return rootPath; } }
@Override public void run(StreamlineConfiguration configuration, Environment environment) throws Exception { AbstractServerFactory sf = (AbstractServerFactory) configuration.getServerFactory(); // disable all default exception mappers sf.setRegisterDefaultExceptionMappers(false); environment.jersey().register(GenericExceptionMapper.class); registerResources(configuration, environment, getSubjectFromLoginImpl(configuration)); if (configuration.isEnableCors()) { List<String> urlPatterns = configuration.getCorsUrlPatterns(); if (urlPatterns != null && !urlPatterns.isEmpty()) { enableCORS(environment, urlPatterns); } } setupCustomTrustStore(configuration); addSecurityHeaders(environment); addServletFilters(configuration, environment); }
protected void configureHystrix(T configuration, Environment environment) { final ServerFactory serverFactory = configuration.getServerFactory(); final Duration shutdownGracePeriod = (serverFactory instanceof AbstractServerFactory) ? ((AbstractServerFactory) serverFactory).getShutdownGracePeriod() : Duration.seconds(30L); environment.lifecycle().manage(new ManagedHystrix(shutdownGracePeriod)); }
protected Handler addRequestLog(Server server, Handler handler, String name) { if (getRequestLogFactory().isEnabled()) { final RequestLogHandler requestLogHandler = new RequestLogHandler(); requestLogHandler.setRequestLog(getRequestLogFactory().build(name)); // server should own the request log's lifecycle since it's already started, // the handler might not become managed in case of an error which would leave // the request log stranded server.addBean(requestLogHandler.getRequestLog(), true); requestLogHandler.setHandler(handler); return requestLogHandler; } return handler; }
protected Handler createAppServlet(Server server, JerseyEnvironment jersey, ObjectMapper objectMapper, Validator validator, MutableServletContextHandler handler, @Nullable Servlet jerseyContainer, MetricRegistry metricRegistry) { configureSessionsAndSecurity(handler, server); final String allowedMethodsParam = allowedMethods.stream() .collect(Collectors.joining(",")); handler.addFilter(AllowedMethodsFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST)) .setInitParameter(AllowedMethodsFilter.ALLOWED_METHODS_PARAM, allowedMethodsParam); if (enableThreadNameFilter) { handler.addFilter(ThreadNameFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST)); } serverPush.addFilter(handler); if (jerseyContainer != null) { jerseyRootPath.ifPresent(jersey::setUrlPattern); jersey.register(new JacksonFeature(objectMapper)); jersey.register(new HibernateValidationBinder(validator)); if (registerDefaultExceptionMappers == null || registerDefaultExceptionMappers) { jersey.register(new ExceptionMapperBinder(detailedJsonProcessingExceptionMapper)); } handler.addServlet(new NonblockingServletHolder(jerseyContainer), jersey.getUrlPattern()); } final InstrumentedHandler instrumented = new InstrumentedHandler(metricRegistry); instrumented.setServer(server); instrumented.setHandler(handler); return instrumented; }
protected Server buildServer(LifecycleEnvironment lifecycle, ThreadPool threadPool) { final Server server = new Server(threadPool); server.addLifeCycleListener(buildSetUIDListener()); lifecycle.attach(server); final ErrorHandler errorHandler = new ErrorHandler(); errorHandler.setServer(server); errorHandler.setShowStacks(false); server.addBean(errorHandler); server.setStopAtShutdown(true); server.setStopTimeout(shutdownGracePeriod.toMilliseconds()); return server; }
/** * Method called to suppress all request logging; usually during testing. */ @SuppressWarnings("unchecked") public THIS disableRequestLog() { RequestLogFactory reqLog = serverFactory().getRequestLogFactory(); reqLog.setAppenders(ImmutableList.<AppenderFactory>of()); return (THIS) this; }
protected Handler createAdminServlet(Server server, MutableServletContextHandler handler, MetricRegistry metrics, HealthCheckRegistry healthChecks) { configureSessionsAndSecurity(handler, server); handler.setServer(server); handler.getServletContext().setAttribute(MetricsServlet.METRICS_REGISTRY, metrics); handler.getServletContext().setAttribute(HealthCheckServlet.HEALTH_CHECK_REGISTRY, healthChecks); handler.addServlet(new NonblockingServletHolder(new AdminServlet()), "/*"); handler.addFilter(AllowedMethodsFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST)) .setInitParameter(AllowedMethodsFilter.ALLOWED_METHODS_PARAM, Joiner.on(',').join(allowedMethods)); return handler; }
protected Handler createAppServlet(Server server, JerseyEnvironment jersey, ObjectMapper objectMapper, Validator validator, MutableServletContextHandler handler, @Nullable Servlet jerseyContainer, MetricRegistry metricRegistry) { configureSessionsAndSecurity(handler, server); handler.addFilter(AllowedMethodsFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST)) .setInitParameter(AllowedMethodsFilter.ALLOWED_METHODS_PARAM, Joiner.on(',').join(allowedMethods)); if (enableThreadNameFilter) { handler.addFilter(ThreadNameFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST)); } serverPush.addFilter(handler); if (jerseyContainer != null) { jerseyRootPath.ifPresent(jersey::setUrlPattern); jersey.register(new JacksonBinder(objectMapper)); jersey.register(new HibernateValidationFeature(validator)); if (registerDefaultExceptionMappers == null || registerDefaultExceptionMappers) { jersey.register(new ExceptionMapperBinder(detailedJsonProcessingExceptionMapper)); } handler.addServlet(new NonblockingServletHolder(jerseyContainer), jersey.getUrlPattern()); } final InstrumentedHandler instrumented = new InstrumentedHandler(metricRegistry); instrumented.setServer(server); instrumented.setHandler(handler); return instrumented; }