2015-06-15 17 views

risposta

61

Sono l'implementatore HTTP/2 in Jetty e guardo altri progetti che implementano HTTP/2.

Tomcat's Mark Thomas ha outlined support for HTTP/2 for Tomcat 9.

Aggiornamento gennaio 2017: Tomcat 8.5 supporta i protocolli HTTP/2 vedere @ joe-Aldrich risposta https://stackoverflow.com/a/37889873/2027465

Considerando che Servlet 4.0 sta per avere come un 2 di supporto/HTTP di destinazione, e che il supporto HTTP/2 richiede il supporto ALPN nel JDK (che anche io sono coinvolto), e che il supporto ALPN nel JDK è programmato per JDK 9, probabilmente ci vorrà molto tempo prima che tutto ciò si materializzi.

Tuttavia, tenere presente che altri contenitori Servlet forniscono già il supporto HTTP/2.

Jetty 9.3.0 ha pieno, robusto, support for HTTP/2, client e server. Abbiamo eseguito HTTP/2 sul nostro sito Web da molti mesi e riteniamo che la produzione di supporto HTTP/2 sia pronta. Le API HTTP/2 Push di Jetty sono prese in considerazione per l'inclusione in Servlet 4.0. HTTP/2 Push è già disponibile per le applicazioni distribuite su Jetty in modo trasparente (tramite un filtro Servlet).

Undertow ha anche un'implementazione per HTTP/2.

Netty ha anche uno, ma non è basato sulle API Servlet.

+0

Per utilizzare HTTP/2 con Tomcat è necessario abilitare HTTPS come indicato nei collegamenti sopra. Ecco una semplice guida su come farlo: https://readlearncode.com/configure-tomcat-9-for-http2/ – Alex

+0

Sto provando ad abilitare h2 in primavera boot tomcat incorporato. Ho HTTPS e l'addUpgradeProtocol (nuovo HTTP2Protocol()) comunque ottengo sempre ... un connettore che non supporta ALPN dovrei aprire una nuova domanda? – lrn2prgrm

20

Tomcat 8.5 è stato rilasciato con funzionalità back-ported da Tomcat 9 e include supporto HTTP/2.

+0

AFAIK, il supporto Tomcat 8.5 di HTTP/2 è basato su Tomcat Native. –

+0

L'utilizzo di h2 in Tomcat 8.5 con i connettori NIO o NIO2 attualmente richiede ancora l'uso di OpenSSL per TLS. Tuttavia, Tomcat 8.5 supporta anche clear text h2c che non richiederebbe Tomcat Native per OpenSSL (sebbene i browser abbiano scelto di non implementare il supporto h2c). –

+0

nativo? vuol dire che il tomcat incorporato su spring boot non sarà in grado di fornire http2? – lrn2prgrm

6

L'ultima versione di Tomcat (version 9) supporta completamente HTTP/2. Tuttavia, poiché tutti i principali browser implementano solo HTTP/2 over TLS, è necessario configurare Tomcat per consentire ciò. Questo articolo spiega TLS configuration in Tomcat, ma ecco il sommario.

Aprire il file conf/server.xml ed effettuare le seguenti modifiche alla configurazione.

<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>