I upgrade spring boot 1.5.x to 2.2.3 but Jetty srvr could not started. I got error which attached.
Could you help me please?
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.5.RELEASE</version>
<relativePath/>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR9</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Jetty web server
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:161)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:545)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:405)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
at com.gg.papi.aggregation.usercollection.UserCollectionAggregation.main(UserCollectionAggregation.java:17)
Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded Jetty web server
at org.springframework.boot.web.embedded.jetty.JettyWebServer.initialize(JettyWebServer.java:142)
at org.springframework.boot.web.embedded.jetty.JettyWebServer.<init>(JettyWebServer.java:92)
at org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory.getJettyWebServer(JettyServletWebServerFactory.java:408)
at org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory.getWebServer(JettyServletWebServerFactory.java:162)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:178)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:158)
... 9 common frames omitted
Caused by: java.lang.IllegalStateException: StatisticsHandler has no Wrapped Handler
at org.eclipse.jetty.server.handler.StatisticsHandler.doStart(StatisticsHandler.java:251)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at org.eclipse.jetty.server.Server.start(Server.java:423)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
at org.eclipse.jetty.server.Server.doStart(Server.java:387)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72)
at org.springframework.boot.web.embedded.jetty.JettyWebServer.initialize(JettyWebServer.java:136)
... 14 common frames omitted
Comment From: snicoll
@erolyapici thanks for the report but it is very hard to guess what the problem could be on something that looks like Jetty specific. Is this a vanilla Jetty setup or do you have customizations in your project?
Comment From: erolyapici
WebServerFactoryCustomizer is not working my project I refactor webserverFactory after that not working.
JettyEmbeddedServletContainerFactory removed spring 2 How can I customize embedenContainer?
`public class ServletContainerFactoryConfiguration implements WebServerFactoryCustomizer
@Autowired
private ServletContainerProperties servletContainerProperties;
@Bean("jettyStatisticsHandler")
public StatisticsHandler statisticsHandler() {
return new StatisticsHandler();
}
@Override
public void customize(JettyServletWebServerFactory factory) {
factory.addServerCustomizers(server -> {
final QueuedThreadPool threadPool = server.getBean(QueuedThreadPool.class);
threadPool.setMaxThreads(servletContainerProperties.getMaxThreads());
});
factory.addServerCustomizers(server -> {
HandlerCollection handlers = new HandlerCollection();
for (Handler handler : server.getHandlers()) {
handlers.addHandler(handler);
}
handlers.addHandler(statisticsHandler());
server.setHandler(handlers);
});
factory.addServerCustomizers(server -> {
for (Connector connector : server.getConnectors()) {
if (connector instanceof ServerConnector) {
HttpConnectionFactory connectionFactory = connector
.getConnectionFactory(HttpConnectionFactory.class);
connectionFactory.getHttpConfiguration()
.setRequestHeaderSize(16 * 1024);
}
}
});
}
}`
Comment From: erolyapici
I change my code after that work :) Thank you ` @Configuration public class ServletContainerFactoryConfiguration {
@Autowired
private ServletContainerProperties servletContainerProperties;
@Bean
public ConfigurableWebServerFactory embeddedServletContainerFactory(
@Value("${server.port:8080}") final Integer port,
@Qualifier("jettyStatisticsHandler") StatisticsHandler statisticsHandler) {
final JettyServletWebServerFactory factory = new JettyServletWebServerFactory(
port);
factory.addServerCustomizers(server -> {
final QueuedThreadPool threadPool = server.getBean(QueuedThreadPool.class);
threadPool.setMaxThreads(servletContainerProperties.getMaxThreads());
});
factory.addServerCustomizers(server -> {
HandlerCollection handlers = new HandlerCollection();
for (Handler handler : server.getHandlers()) {
handlers.addHandler(handler);
}
handlers.addHandler(statisticsHandler);
server.setHandler(handlers);
});
factory.addServerCustomizers(server -> {
for (Connector connector : server.getConnectors()) {
if (connector instanceof ServerConnector) {
HttpConnectionFactory connectionFactory = connector
.getConnectionFactory(HttpConnectionFactory.class);
connectionFactory.getHttpConfiguration()
.setRequestHeaderSize(16 * 1024);
}
}
});
return factory;
}
@Bean("jettyStatisticsHandler")
public StatisticsHandler statisticsHandler() {
return new StatisticsHandler();
}
}`