diff --git a/spring-boot/src/main/java/org/springframework/boot/web/embedded/tomcat/TomcatServletWebServerFactory.java b/spring-boot/src/main/java/org/springframework/boot/web/embedded/tomcat/TomcatServletWebServerFactory.java index d888ab2c33d3..8fb47a3b7038 100644 --- a/spring-boot/src/main/java/org/springframework/boot/web/embedded/tomcat/TomcatServletWebServerFactory.java +++ b/spring-boot/src/main/java/org/springframework/boot/web/embedded/tomcat/TomcatServletWebServerFactory.java @@ -50,6 +50,7 @@ import org.apache.catalina.WebResourceSet; import org.apache.catalina.Wrapper; import org.apache.catalina.connector.Connector; +import org.apache.catalina.core.AprLifecycleListener; import org.apache.catalina.loader.WebappLoader; import org.apache.catalina.session.StandardManager; import org.apache.catalina.startup.Tomcat; @@ -64,6 +65,7 @@ import org.apache.coyote.http11.AbstractHttp11JsseProtocol; import org.apache.coyote.http11.AbstractHttp11Protocol; import org.apache.coyote.http11.Http11NioProtocol; +import org.apache.coyote.http2.Http2Protocol; import org.apache.tomcat.util.net.SSLHostConfig; import org.springframework.boot.web.server.Compression; @@ -122,7 +124,9 @@ public class TomcatServletWebServerFactory extends AbstractServletWebServerFacto private List contextValves = new ArrayList<>(); - private List contextLifecycleListeners = new ArrayList<>(); + private List contextLifecycleListeners = new ArrayList<>(Arrays.asList( + new AprLifecycleListener() + )); private List tomcatContextCustomizers = new ArrayList<>(); @@ -173,6 +177,7 @@ public WebServer getWebServer(ServletContextInitializer... initializers) { : createTempDir("tomcat")); tomcat.setBaseDir(baseDir.getAbsolutePath()); Connector connector = new Connector(this.protocol); + connector.addUpgradeProtocol(new Http2Protocol()); tomcat.getService().addConnector(connector); customizeConnector(connector); tomcat.setConnector(connector);