HTTP/2 support in Tomcat 8

2019-04-18 07:09发布

问题:

After some research, I was surprised that I did not not find any resource on HTTP/2 support in Tomcat. Changelogs of 8.0 indicate an experimental support of SPDY and wiki refers to HTTP/2 as a supported spec (http://wiki.apache.org/tomcat/Specifications) but I don't find any tutorial on it.

Do you know if it is already possible to enable HTTP/2 on Tomcat? If the answer is yes how I can do that?

回答1:

Tomcat does not yet support HTTP/2.

HTTP/2 support is planned for Tomcat 9 onwards. It may get back-ported to earlier versions.

The experimental SPDY support was just that: experimental. It worked while the browsers supported the particular version of SPDY but no browser currently supports the version of SDPY implemented by Tomcat.

That experimental support of SPDY has been removed from Tomcat 8.0.22, noted in the changelog.



回答2:

Tomcat 8.5 has been released with features back-ported from Tomcat 9 and includes HTTP/2 support.

I haven't personally had the chance to setup HTTP/2 on Tomcat 8.5 yet, so I can't comment on the "how to".



回答3:

HTTP/2 Support is now available in Tomcat. Tomcat-8.5 supports HTTP/2. To enable HTTP/2 in tomcat-8.5 or above you need to upgrade the connector protocol in the file server.xml in the tomcat conf folder.

<Connector ... >
  <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
</Connector>

You also need to set up the configuration of your SSL certificates to work with this connector.



回答4:

to enable http2 for tomcat8.5.x,

@Bean
       public EmbeddedServletContainerCustomizer tomcatCustomizer() {
        return container -> {
            if (container instanceof TomcatEmbeddedServletContainerFactory) {
                ((TomcatEmbeddedServletContainerFactory) container).addConnectorCustomizers((connector) -> {
                    connector.addUpgradeProtocol(new Http2Protocol());
                });
            }
        };
    }