diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/JettyServletWebServerFactory.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/JettyServletWebServerFactory.java index 89d0159d52ae..6644d775fc4e 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/JettyServletWebServerFactory.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/JettyServletWebServerFactory.java @@ -116,6 +116,7 @@ * @author Venil Noronha * @author Henri Kerola * @author Moritz Halbritter + * @author Onur Kagan Ozcan * @since 2.0.0 * @see #setPort(int) * @see #setConfigurations(Collection) @@ -183,7 +184,7 @@ public WebServer getWebServer(ServletContextInitializer... initializers) { server.setHandler(addHandlerWrappers(context)); this.logger.info("Server initialized with port: " + port); if (this.maxConnections > -1) { - server.addBean(new ConnectionLimit(this.maxConnections, server)); + server.addBean(new ConnectionLimit(this.maxConnections, server.getConnectors())); } if (Ssl.isEnabled(getSsl())) { customizeSsl(server, address); diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/embedded/jetty/JettyServletWebServerFactoryTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/embedded/jetty/JettyServletWebServerFactoryTests.java index dbb73701e06c..07f030593476 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/embedded/jetty/JettyServletWebServerFactoryTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/embedded/jetty/JettyServletWebServerFactoryTests.java @@ -39,6 +39,7 @@ import org.apache.hc.core5.http.Header; import org.apache.hc.core5.http.HttpResponse; import org.apache.jasper.servlet.JspServlet; +import org.assertj.core.api.InstanceOfAssertFactories; import org.awaitility.Awaitility; import org.eclipse.jetty.ee10.servlet.ErrorPageErrorHandler; import org.eclipse.jetty.ee10.servlet.ServletHolder; @@ -46,6 +47,7 @@ import org.eclipse.jetty.ee10.webapp.ClassMatcher; import org.eclipse.jetty.ee10.webapp.Configuration; import org.eclipse.jetty.ee10.webapp.WebAppContext; +import org.eclipse.jetty.server.AbstractConnector; import org.eclipse.jetty.server.ConnectionLimit; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.Handler; @@ -85,6 +87,7 @@ * @author Andy Wilkinson * @author Henri Kerola * @author Moritz Halbritter + * @author Onur Kagan Ozcan */ class JettyServletWebServerFactoryTests extends AbstractServletWebServerFactoryTests { @@ -541,6 +544,19 @@ void shouldApplyMaxConnections() { assertThat(connectionLimit.getMaxConnections()).isOne(); } + @Test + void shouldApplyingMaxConnectionUseConnector() throws Exception { + JettyServletWebServerFactory factory = getFactory(); + factory.setMaxConnections(1); + this.webServer = factory.getWebServer(); + Server server = ((JettyWebServer) this.webServer).getServer(); + assertThat(server.getConnectors()).isEmpty(); + ConnectionLimit connectionLimit = server.getBean(ConnectionLimit.class); + assertThat(connectionLimit).extracting("_connectors") + .asInstanceOf(InstanceOfAssertFactories.list(AbstractConnector.class)) + .hasSize(1); + } + @Override protected String startedLogMessage() { return ((JettyWebServer) this.webServer).getStartedLogMessage();