Closed
Description
Hi,
I currently testing Spring Boot 2.0.0.M2 and I was wondering how to customize Jetty Server with JettyReactiveWebServerFactory
?
With previous version I used JettyServletWebServerFactory
which allowed to add Jetty Customizers. I was able to customize port, thread pool size and Jetty behaviour like remove ServerVersion Http header, enable Jetty request logging and so on. Ex :
@Bean
public ConfigurableServletWebServerFactory webServerFactory(BeanFactory beanFactory) {
JettyServletWebServerFactory factory = new JettyServletWebServerFactory();
factory.setPort(8080);
final QueuedThreadPool threadPool = new QueuedThreadPool(applicationConfig.getServerMaxThreads(), applicationConfig.getServerMinThreads(),
applicationConfig.getServerIdleTimeout(), new BlockingArrayQueue<>(100, 100));
threadPool.setName("http");
factory.setThreadPool(threadPool);
// Add customized Jetty configuration
factory.addServerCustomizers(new JettyServerCustomizer[]{(JettyServerCustomizer) server -> {
ServerConnector httpConnector = (ServerConnector) server.getConnectors()[0];
// Remove non necessary headers (Server, X-Powered-By and Date).
HttpConfiguration httpConfiguration = httpConnector.getConnectionFactory(HttpConnectionFactory.class).getHttpConfiguration();
httpConfiguration.setSendServerVersion(false);
httpConfiguration.setSendXPoweredBy(false);
httpConfiguration.setSendDateHeader(false);
server.addConnector(httpConnector);
...
}
With the reactive version, I still can configure port and pool but I can't found how to customize other specific setting of Jetty server such as enabling logging of requests or disable some headers
@Bean
public JettyReactiveWebServerFactory webServerFactory(BeanFactory beanFactory) {
JettyReactiveWebServerFactory factory = new JettyReactiveWebServerFactory();
factory.setPort(8080);
final QueuedThreadPool threadPool = new QueuedThreadPool(applicationConfig.getServerMaxThreads(), applicationConfig.getServerMinThreads(),
applicationConfig.getServerIdleTimeout(), new BlockingArrayQueue<>(100, 100));
threadPool.setName("http");
factory.setThreadPool(threadPool);
// :-( Not available on reactive version : factory.addServerCustomizers(...)
return factory;
}
Is it intentional ? Is there any kind of limitation concerning customization of Jetty when using the reactive version ?
Thank in advance for your help.