From 34417273019ac3f80fe7bd45b64b6181ffa71ae6 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Mon, 7 Aug 2017 11:07:21 -0400 Subject: [PATCH 1/2] With Tomcat, support APR (if available) by default Adds AprLifecycleListener to the Tomcat listeners. Fixes #7376 --- .../web/embedded/tomcat/TomcatServletWebServerFactory.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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..6d703f7ae547 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; @@ -122,7 +123,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<>(); From 1de26d72644da95bf9a6b4dc03ae083ec0b813a4 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Mon, 7 Aug 2017 11:20:11 -0400 Subject: [PATCH 2/2] With Tomcat, enable HTTP/2 by default Note that, until Java 9 arrives with ALPN support (JEP-244), tomcat-native/APR must be available in order for Tomcat to enable HTTP/2 (if it is not available, an error is logged but everything otherwise still works). --- .../boot/web/embedded/tomcat/TomcatServletWebServerFactory.java | 2 ++ 1 file changed, 2 insertions(+) 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 6d703f7ae547..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 @@ -65,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; @@ -176,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);