Does anyone know what is the lowest version of Tomcat that supports HTTP/2.0? I\'ve been looking everywhere on their site and I cannot find any details regarding this.
I'm the HTTP/2 implementer in Jetty, and I watch out other projects implementing HTTP/2.
Tomcat's Mark Thomas has outlined support for HTTP/2 for Tomcat 9.
Update Jan 2017: Tomcat 8.5 supports HTTP/2 see @joe-aldrich answer https://stackoverflow.com/a/37889873/2027465
Considering that Servlet 4.0 is going to have as a target HTTP/2 support, and that HTTP/2 support requires ALPN support in the JDK (which also I am involved in), and that ALPN support in the JDK is scheduled for JDK 9, it is probably going to be a long time before all that materializes.
However, be aware that other Servlet Containers already provide HTTP/2 support.
Jetty 9.3.0 has full, robust, support for HTTP/2, client and server. We have been running HTTP/2 on our own website for many months now, and we consider HTTP/2 support production ready. Jetty's HTTP/2 Push APIs are being considered for inclusion in Servlet 4.0. HTTP/2 Push is already available to applications deployed to Jetty in a transparent way (via a Servlet Filter).
Undertow also has an implementation for HTTP/2.
Netty also has one, but it's not based on the Servlet APIs.
The latest version of Tomcat (version 9) fully supports HTTP/2. However, as all major browsers only implement HTTP/2 over TLS you will need to configure Tomcat to allow this. This article explains TLS configuration in Tomcat, but here's the summary.
Open the conf/server.xml
file and make the following configuration changes.
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" SSLEnabled="true">
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol"/>
<SSLHostConfig honorCipherOrder="false">
<Certificate certificateKeyFile="conf/ca.key"
certificateFile="conf/ca.crt"/>
</SSLHostConfig>
</Connector>
Tomcat 8.5 has been released with features back-ported from Tomcat 9 and includes HTTP/2 support.