Поддержка HTTP/2 в Tomcat 8

После некоторых исследований я был удивлен, что не нашел ни одного ресурса о поддержке HTTP/2 в Tomcat. Журналы изменений версии 8.0 указывают на экспериментальную поддержку SPDY, а вики ссылаются на HTTP/2 как на поддерживаемую спецификацию (http://wiki.apache.org/tomcat/Specifications), но я не нашел по нему учебника.

Знаете ли вы, возможно ли уже включить HTTP/2 на Tomcat? Если ответ да, как я могу это сделать?


person Guillaume D.    schedule 31.03.2015    source источник
comment
Здесь есть вопрос? Идеи о чем? Надеюсь, вы не спрашиваете, где найти документацию... потому что это не по теме!!   -  person Stephen C    schedule 31.03.2015
comment
Я добавил вопрос явно...   -  person Guillaume D.    schedule 31.03.2015
comment
возможный дубликат Настроить SPDY в окнах tomcat 8   -  person Stephen C    schedule 31.03.2015
comment
Краткий ответ: не беспокойтесь.   -  person Stephen C    schedule 31.03.2015
comment
См. также: stackoverflow.com/questions/30855281 /   -  person Nux    schedule 29.03.2016


Ответы (4)


Tomcat еще не поддерживает HTTP/2.

Поддержка HTTP/2 запланирована для Tomcat 9 и более поздних версий. Он может быть перенесен на более ранние версии.

Экспериментальная поддержка SPDY была именно экспериментальной. Это работало, пока браузеры поддерживали конкретную версию SPDY, но в настоящее время ни один браузер не поддерживает версию SDPY, реализованную Tomcat.

Эта экспериментальная поддержка SPDY была удалена из Tomcat 8.0.22, что отмечено в журнале изменений.

person Mark Thomas    schedule 01.04.2015

Tomcat 8.5 был выпущен с функциями, перенесенными из Tomcat 9, и включает поддержку HTTP/2.

У меня лично еще не было возможности настроить HTTP/2 на Tomcat 8.5, поэтому я не могу комментировать «как это сделать».

person Joe Aldrich    schedule 17.06.2016

Поддержка HTTP/2 теперь доступна в Кот. Tomcat-8.5 поддерживает HTTP/2. Чтобы включить HTTP/2 в tomcat-8.5 или выше, вам необходимо обновить протокол соединителя в файле server.xml в папке conf tomcat.

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

Вам также необходимо настроить конфигурацию ваших SSL-сертификатов для работы с этим коннектором.

person Dhumil Agarwal    schedule 11.04.2016
comment
Спасибо! Как вы выполняете сервер-пуш? - person Guillaume D.; 10.07.2016
comment
Server Push можно выполнить с помощью PushBuilder API в Java. - person Dhumil Agarwal; 11.07.2016
comment
Значит ли это, что нет собственного API, который можно использовать, и, следовательно, требуется сервлет 4? Кроме того, если это утверждение верно, мы можем воспользоваться преимуществами server-push только в tomcat 9, потому что кажется, что tomcat 8.5 все еще использует сервлет 3.1? - person Guillaume D.; 11.07.2016
comment
Чтобы добавить к ответу о настройке Tomcat 9 для HTTP/2, см. это: https://readlearncode.com/configure-tomcat-9-for-http2/ - person Alex Theedom; 16.07.2016
comment
HTTP/2 по умолчанию сделан безопасным по своей конструкции. Следовательно, нам нужно иметь SSL с HTTP2. Если вы не хотите использовать SSL, вам нужно вернуться к HTTP 1.1 и не использовать HTTP2. - person Dhumil Agarwal; 28.10.2019

чтобы включить http2 для tomcat8.5.x,

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