2015-03-31 34 views
18

Po kilku badaniach zaskoczyło mnie, że nie znalazłem żadnego zasobu na temat obsługi HTTP/2 w Tomcat. Zmiany w wersji 8.0 wskazują na eksperymentalne wsparcie dla SPDY, a wiki odwołuje się do HTTP/2 jako obsługiwanego speca (http://wiki.apache.org/tomcat/Specifications), ale nie znalazłem żadnego tutoriala na ten temat.Obsługa HTTP/2 w Tomcat 8

Czy wiesz, czy jest już możliwe włączenie protokołu HTTP/2 na serwerze Tomcat? Jeśli odpowiedź brzmi tak, jak mogę to zrobić?

+0

Czy istnieje pytanie tutaj? Pomysły o czym? Mam nadzieję, że nie pytasz gdzie znaleźć dokumentację ... ponieważ to jest nie na temat !! –

+0

Dodałem pytanie wyraźnie ... –

+0

możliwy duplikat [Konfiguracja SPDY na tomcat 8 windows] (http://stackoverflow.com/questions/28795470/configure-spdy-on-tomcat-8-windows) –

Odpowiedz

20

Tomcat nie obsługuje jeszcze protokołu HTTP/2.

Wsparcie dla HTTP/2 jest planowane dla Tomcat 9 i późniejszych. Może zostać przeniesiony do wcześniejszych wersji.

Eksperymentalna obsługa SPDY była właśnie taka: eksperymentalna. Udało się, podczas gdy przeglądarki obsługują konkretną wersję SPDY, ale żadna przeglądarka nie obsługuje obecnie wersji SDPY zaimplementowanej przez Tomcat.

To eksperymentalne wsparcie dla SPDY zostało usunięte z Tomcat 8.0.22, odnotowanego w changelog.

4

HTTP/2 Support jest teraz dostępny w Tomcat. Tomcat-8.5 obsługuje HTTP/2. Aby włączyć protokół HTTP/2 w wersji tomcat-8.5 lub nowszej, należy zaktualizować protokół złącza w pliku server.xml w folderze tomcat conf.

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

Należy również skonfigurować konfigurację certyfikatów SSL do pracy z tym łącznikiem.

+1

Dzięki! W jaki sposób wykonujecie push serwera? –

+0

Server Push można wykonać za pomocą interfejsu API PushBuilder w Javie. –

+0

Czy oznacza to, że nie ma natywnego API, z którego można korzystać, w związku z czym wymagany jest serwlet 4? Również jeśli to stwierdzenie jest prawdziwe, możemy skorzystać z server-push tylko w tomcat 9, ponieważ wydaje się, że tomcat 8.5 nadal używa serwletu 3.1? –

7

Tomcat 8.5 został wydany z funkcjami dostarczonymi z Tomcat 9 i zawiera obsługę HTTP/2.

Nie miałem jeszcze okazji skonfigurować HTTP/2 na Tomcat 8.5, więc nie mogę komentować "jak to zrobić".

+0

Wskazówki znajdują się tutaj: https: //tomcat.apache .org/tomcat-8,5-doc/config/http2.html – Paul

0

włączyć http2 dla tomcat8.5.x,

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