2015-06-15 11 views

Antwort

61

Ich bin der HTTP/2-Implementierer in Jetty, und ich beobachte andere Projekte, die HTTP/2 implementieren.

Tomcat Mark Thomas hat outlined support for HTTP/2 for Tomcat 9.

-Update Januar 2017: Tomcat 8.5 unterstützt HTTP/2 https://stackoverflow.com/a/37889873/2027465

Bedenkt man, dass Servlet 4.0 als Ziel HTTP/2-Unterstützung haben wird, und dass HTTP/2-Unterstützung @ joe-aldrich Antwort sehen erfordert ALPN-Unterstützung im JDK (an dem ich auch beteiligt bin), und dass die ALPN-Unterstützung im JDK für JDK 9 geplant ist, wird es wahrscheinlich lange dauern, bis sich alles materialisiert.

Beachten Sie jedoch, dass andere Servlet-Container bereits HTTP/2-Unterstützung bieten.

Jetty 9.3.0 hat volle, robuste, support for HTTP/2, Client und Server. Wir betreiben HTTP/2 seit vielen Monaten auf unserer eigenen Website und halten die HTTP/2-Unterstützung für produktionsbereit. Die HTTP/2-Push-APIs von Jetty werden zur Aufnahme in Servlet 4.0 in Betracht gezogen. HTTP/2 Push ist bereits für Anwendungen verfügbar, die auf Jetty auf transparente Weise bereitgestellt werden (über einen Servlet-Filter).

Undertow hat auch eine Implementierung für HTTP/2.

Netty hat auch einen, aber es basiert nicht auf den Servlet-APIs.

+0

Um HTTP/2 mit Tomcat zu verwenden, müssen Sie HTTPS aktivieren, wie in den obigen Links erwähnt. Hier ist eine einfache Anleitung, wie es geht: https://readlearncode.com/configure-tomcat-9-for-http2/ – Alex

+0

Ich versuche zu aktivieren H2 im Frühjahr Boot Embedded Tomcat. Ich habe HTTPS und das addUpgradeProtocol (neues HTTP2Protocol()), aber ich bekomme immer ... Verbindungsstück, das ALPN nicht unterstützt, sollte ich eine neue Frage öffnen? – lrn2prgrm

20

Tomcat 8.5 wurde mit von Tomcat 9 zurückportierten Funktionen veröffentlicht und enthält HTTP/2-Unterstützung.

+0

AFAIK, Tomcat 8.5 Die Unterstützung von HTTP/2 basiert auf Tomcat Native. –

+0

Die Verwendung von h2 in Tomcat 8.5 mit den NIO- oder NIO2-Anschlüssen erfordert derzeit noch die Verwendung von OpenSSL für TLS. Tomcat 8.5 unterstützt jedoch auch Klartext-h2c, für die Tomcat Native für OpenSSL nicht benötigt wird (Browser haben sich jedoch bisher dafür entschieden, die h2c-Unterstützung nicht zu implementieren). –

+0

nativ? bedeutet das, dass der eingebettete Tomcat auf Spring Boot nicht in der Lage sein wird http2 zu liefern? – lrn2prgrm

6

Die neueste Version von Tomcat (version 9) unterstützt vollständig HTTP/2. Da jedoch alle gängigen Browser nur HTTP/2 over TLS implementieren, müssen Sie Tomcat konfigurieren, um dies zu ermöglichen. Dieser Artikel erklärt TLS configuration in Tomcat, aber hier ist die Zusammenfassung.

Öffnen Sie die Datei conf/server.xml und nehmen Sie die folgenden Konfigurationsänderungen vor.

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