@Inject public UndertowServer(final org.jooby.spi.HttpHandler dispatcher, final Config conf, final Provider<SSLContext> sslContext) throws Exception { awaitShutdown = conf.getDuration("undertow.awaitShutdown", TimeUnit.MILLISECONDS); boolean http2 = conf.getBoolean("server.http2.enabled"); shutdown = new GracefulShutdownHandler(doHandler(dispatcher, conf)); Undertow.Builder ubuilder = configure(conf, io.undertow.Undertow.builder()) .addHttpListener(conf.getInt("application.port"), host(conf.getString("application.host"))); ubuilder.setServerOption(UndertowOptions.ENABLE_HTTP2, http2); boolean securePort = conf.hasPath("application.securePort"); if (securePort) { ubuilder.addHttpsListener(conf.getInt("application.securePort"), host(conf.getString("application.host")), sslContext.get()); } this.server = ubuilder.setHandler(shutdown) .build(); }
builder.setServerOption(UndertowOptions.ENABLE_HTTP2, true); .setServerOption(UndertowOptions.ALWAYS_SET_KEEP_ALIVE, false) // don't send a keep-alive header for .setServerOption(UndertowOptions.ALWAYS_SET_DATE, true) .setServerOption(UndertowOptions.RECORD_REQUEST_START_TIME, false) .setHandler(Handlers.header(handler, Headers.SERVER_STRING, "L")).setWorkerThreads(200).build();
@SuppressWarnings("unchecked") public static void setConnectionOptions( Builder builder, Configuration configuration) { Map<String, Object> options = configuration.getConnectionOptions(); UNDERTOW_OPTIONS.stream().forEach(option -> { if (options.containsKey(option.getName())) { Object value = options.get(option.getName()); if (value != null) { builder.setServerOption(option, value); LOGGER.trace("Connection option {}={}", option.getName(), value); } } }); LONG_UNDERTOW_OPTIONS.stream().forEach(option -> { if (options.containsKey(option.getName())) { Object value = options.get(option.getName()); if (value != null) { Long lvalue = 0l + (Integer) value; builder.setServerOption(option, lvalue); LOGGER.trace("Connection option {}={}", option.getName(), lvalue); } } }); }
public static void main(final String[] args) throws Exception { assertJavaVersion8(); DeploymentInfo servletBuilder = deployment() .setClassLoader(HelloWorldServlet.class.getClassLoader()) .setContextPath(MYAPP) .setDeploymentName("hello-world.war") .addServlets( servlet("HelloWorldServlet", HelloWorldServlet.class) .addInitParam("message", "Hello World") .addMapping("/api/hello-world")); DeploymentManager manager = defaultContainer().addDeployment(servletBuilder); manager.deploy(); HttpHandler servletHandler = manager.start(); PathHandler path = Handlers.path(Handlers.redirect(MYAPP)) .addPrefixPath(MYAPP, servletHandler); String bindAddress = System.getProperty("bind.address", "localhost"); SSLContext sslContext = createSSLContext(loadKeyStore("server.keystore"), loadKeyStore("server.truststore")); Undertow server = Undertow.builder() .setServerOption(UndertowOptions.ENABLE_HTTP2, true) .addHttpsListener(8443, bindAddress, sslContext) .setHandler(path) .build(); server.start(); }
private Undertow createServer(URL url, UndertowHTTPHandler undertowHTTPHandler) throws Exception { Undertow.Builder result = Undertow.builder(); result.setServerOption(UndertowOptions.IDLE_TIMEOUT, getMaxIdleTime()); if (tlsServerParameters != null) { if (this.sslContext == null) { this.sslContext = createSSLContext(); } result = result.addHttpsListener(getPort(), getHost(), this.sslContext); } else { result = result.addHttpListener(getPort(), getHost()); } path = Handlers.path(new NotFoundHandler()); if (url.getPath().length() == 0) { result = result.setHandler(Handlers.trace(undertowHTTPHandler)); } else { if (undertowHTTPHandler.isContextMatchExact()) { path.addExactPath(url.getPath(), undertowHTTPHandler); } else { path.addPrefixPath(url.getPath(), undertowHTTPHandler); } result = result.setHandler(wrapHandler(new HttpContinueReadHandler(path))); } result = decorateUndertowSocketConnection(result); result = disableSSLv3(result); result = configureThreads(result); return result.build(); }
private Undertow configureServer() { gracefulShutdown = new HermesShutdownHandler(handlers(), hermesMetrics); Undertow.Builder builder = Undertow.builder() .addHttpListener(port, host) .setServerOption(REQUEST_PARSE_TIMEOUT, configFactory.getIntProperty(FRONTEND_REQUEST_PARSE_TIMEOUT)) .setServerOption(MAX_HEADERS, configFactory.getIntProperty(FRONTEND_MAX_HEADERS)) .setServerOption(MAX_PARAMETERS, configFactory.getIntProperty(FRONTEND_MAX_PARAMETERS)) .setServerOption(MAX_COOKIES, configFactory.getIntProperty(FRONTEND_MAX_COOKIES)) .setServerOption(ALWAYS_SET_KEEP_ALIVE, configFactory.getBooleanProperty(FRONTEND_ALWAYS_SET_KEEP_ALIVE)) .setServerOption(KEEP_ALIVE, configFactory.getBooleanProperty(FRONTEND_SET_KEEP_ALIVE)) .setSocketOption(BACKLOG, configFactory.getIntProperty(FRONTEND_BACKLOG_SIZE)) .setSocketOption(READ_TIMEOUT, configFactory.getIntProperty(FRONTEND_READ_TIMEOUT)) .setIoThreads(configFactory.getIntProperty(FRONTEND_IO_THREADS_COUNT)) .setWorkerThreads(configFactory.getIntProperty(FRONTEND_WORKER_THREADS_COUNT)) .setBufferSize(configFactory.getIntProperty(FRONTEND_BUFFER_SIZE)) .setHandler(gracefulShutdown); if (configFactory.getBooleanProperty(FRONTEND_SSL_ENABLED)) { builder.addHttpsListener(sslPort, host, sslContextFactoryProvider.getSslContextFactory().create()) .setSocketOption(SSL_CLIENT_AUTH_MODE, SslClientAuthMode.valueOf(configFactory.getStringProperty(FRONTEND_SSL_CLIENT_AUTH_MODE).toUpperCase())) .setServerOption(ENABLE_HTTP2, configFactory.getBooleanProperty(FRONTEND_HTTP2_ENABLED)); } this.undertow = builder.build(); return undertow; }
protected Undertow.Builder createUndertowBuilder() throws Exception { Undertow.Builder undertowBuilder = Undertow.builder() .setHandler(this.undertowHandler) // NOTE: should ninja not use equals chars within its cookie values? .setServerOption(UndertowOptions.ALLOW_EQUALS_IN_COOKIE_VALUE, true); if (isPortEnabled()) { undertowBuilder.addHttpListener(getPort(), getHost()); } if (isSslPortEnabled()) { this.sslContext = this.createSSLContext(); // workaround for chrome issue w/ JVM and self-signed certs triggering // an IOException that can safely be ignored ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) org.slf4j.LoggerFactory.getLogger("io.undertow.request.io"); root.setLevel(Level.WARN); undertowBuilder.addHttpsListener(this.sslPort, this.host, this.sslContext); } logger.info("Undertow h2 protocol ({} = {})", NinjaUndertowSettings.HTTP2, this.settings.getHttp2()); undertowBuilder.setServerOption(UndertowOptions.ENABLE_HTTP2, this.settings.getHttp2()); return undertowBuilder; }
@Inject public UndertowServer(final org.jooby.spi.HttpHandler dispatcher, final Config conf, final Provider<SSLContext> sslContext) throws Exception { awaitShutdown = conf.getDuration("undertow.awaitShutdown", TimeUnit.MILLISECONDS); boolean http2 = conf.getBoolean("server.http2.enabled"); shutdown = new GracefulShutdownHandler(doHandler(dispatcher, conf)); Undertow.Builder ubuilder = configure(conf, io.undertow.Undertow.builder()) .addHttpListener(conf.getInt("application.port"), host(conf.getString("application.host"))); ubuilder.setServerOption(UndertowOptions.ENABLE_HTTP2, http2); boolean securePort = conf.hasPath("application.securePort"); if (securePort) { ubuilder.addHttpsListener(conf.getInt("application.securePort"), host(conf.getString("application.host")), sslContext.get()); } this.server = ubuilder.setHandler(shutdown) .build(); }
Undertow createServer(HttpHandler httpHandler, SSLProvider sslProvider) { PathHandler path = Handlers .path(Handlers.redirect(serverConfig.getContextPath())) .addPrefixPath(serverConfig.getContextPath(), httpHandler); Undertow.Builder builder = Undertow.builder().setWorker(xnioWorker); if (serverConfig.isHttps()) { builder = configureHttps(builder, sslProvider); } else { builder = configureHttp(builder); } if (serverConfig.isHttp2()) { LOGGER.info("HTTP/2 support is enabled"); builder.setServerOption(UndertowOptions.ENABLE_HTTP2, serverConfig.isHttp2()); } return builder.setHandler(path).build(); }
@Bean UndertowEmbeddedServletContainerFactory embeddedServletContainerFactory() { UndertowEmbeddedServletContainerFactory factory = new UndertowEmbeddedServletContainerFactory(); factory.addBuilderCustomizers( builder -> builder.setServerOption(UndertowOptions.ENABLE_HTTP2, true)); return factory; }
@Override public synchronized void start(final StartContext context) { undertow = Undertow.builder() .addHttpsListener(port, address, sslContext.get()) .setServerOption(UndertowOptions.ENABLE_HTTP2, true) .setHandler(handler) .build(); undertow.start(); Logger.getLogger(UndertowSSLService.class).infof("Started Undertow on %s:%d", address, port); }
public static SimpleServer simpleServer(HttpHandler handler) { Undertow.Builder undertow = Undertow.builder() /* * This setting is needed if you want to allow '=' as a value in a cookie. * If you base64 encode any cookie values you probably want it on. */ .setServerOption(UndertowOptions.ALLOW_EQUALS_IN_COOKIE_VALUE, true) .addHttpListener(DEFAULT_PORT, DEFAULT_HOST, handler) ; return new SimpleServer(undertow); } }
/** * Enables recording the request start time. * * @param builder the Undertow builder. */ private void enableRecordingRequestStartTime(Undertow.Builder builder) { builder.setServerOption(UndertowOptions.RECORD_REQUEST_START_TIME, true); }
private void setServerOptions(final Builder builder) { Config serverOptions = undertowConfig.getConfig( "server-options" ); for ( String key : serverOptions.getKeys() ) { ConfigurableOption option = getConfigOption( key, serverOptions.getObject(key) ); if ( option != null ) { log.info( " " + option.getOption() + ": " + option.getValue() ); builder.setServerOption(option.getOption(), option.getValue()); } } }
public <T> ProxyServerBuilder setServerOption(Option<T> option, T value) { builder.setServerOption(option, value); return this; }
void setupHttp2( Config config, Undertow.Builder server ){ if ( config.getBoolean("http2-mode") ) { log.info( "Enabling HTTP/2" ); server.setServerOption( ENABLE_HTTP2, true ); } } }
} else { builder.setServerOption(UndertowOptions.ENABLE_HTTP2, true); try { KeyStore keyStore = loadKeyStore(getSettings().getKeystoreFile(), getSettings().getKeystorePassword());
private <T> void addUndertowOption(Undertow.Builder builder, Option<T> option, T value, String prefix) { switch (prefix) { case UNDERTOW_SERVER_PREFIX: builder.setServerOption(option, value); break; case UNDERTOW_SOCKET_PREFIX: builder.setSocketOption(option, value); break; case UNDERTOW_WORKER_PREFIX: builder.setWorkerOption(option, value); break; default: break; } }
private void customizeSsl(Builder builder) { new SslBuilderCustomizer(getPort(), getAddress(), getSsl(), getSslStoreProvider()) .customize(builder); if (getHttp2() != null) { builder.setServerOption(UndertowOptions.ENABLE_HTTP2, getHttp2().isEnabled()); } }
private void customizeSsl(Undertow.Builder builder) { new SslBuilderCustomizer(getPort(), getAddress(), getSsl(), getSslStoreProvider()) .customize(builder); if (getHttp2() != null) { builder.setServerOption(UndertowOptions.ENABLE_HTTP2, getHttp2().isEnabled()); } }