Как я могу поддерживать HTTP2 с Tomcat 8.5 и Java SE 8 - PullRequest
0 голосов
/ 05 июня 2018

Я провожу некоторые исследования HTTP2 и возможности использования его в нашем приложении.На данный момент мы разрабатываем на Java 8 и используем Tomcat 8.5.24 (это означает, что мы используем Servlet 3.1).Я исследовал сеть, но не смог найти никаких ресурсов о том, как использовать возможности HTTP2.

Единственные примеры, которые я мог найти, - это использование Servlet 4.0 (который из того, что я видел, поддерживается только Tomcat 9) иединственное, что было продемонстрировано, - это использование PushBuilder для отправки файлов css и js при запросе клиентом и html-страницы.

Смогу ли я использовать асинхронный API, предоставляемый Servlet 3.1 по HTTP2?Поддерживается ли HTTP2 в Servlet 3.1?Если нет, то какой смысл Tomcat 8.5 поддерживать HTTP2?Только для продвижения веб-ресурсов?

1 Ответ

0 голосов
/ 10 июня 2018

Во-первых, несколько основных моментов:

  • Вы должны использовать Servlet 4.0 для реализации push-запросов сервера.API не существует в более ранних версиях, таких как 3.1.
  • Спецификация сервлета теперь находится под эгидой Java EE ("Jakarata EE"), а спецификация Servlet 4.0 является частью Java EE 8.
  • Таким образом, для реализации проталкивания сервера в сервлете вы должны использовать EE 8. Вы не можете использовать EE 7.
  • Однако вы можете использовать JDK 8 или выше с EE 8. В этом нет необходимости.перейти к JDK 9.
  • Tomcat предоставляет полезную таблицу для сопоставления любой версии Tomcat с поддерживаемыми версиями Java и сервлета.
  • Следующие серверы поддерживают Java EE 8: GlassFish5.x, Payara 5.x и Tomcat 9.x.Вы не можете использовать Tomcat 8.5.

Для решения ваших конкретных вопросов:

Смогу ли я использовать асинхронный API, предоставляемый Servlet 3.1 по HTTP2?

Да.До сих пор есть спецификация 4.0.

Поддерживается ли HTTP2 Servlet 3.1?

Нет.В Приложении A1 спецификации Servlet 4.0 прямо указано, что одним из изменений версии 3.1 является «Требование поддержки HTTP / 2».

Если нет, то какой смысл Tomcat 8.5 поддерживать HTTP2?

Поскольку в HTTP / 2 есть функции, которые существуют независимо от сервлетов.См. документацию Tomcat 8.5 по его поддержке HTTP / 2 .Например, несмотря на то, что вы не можете реализовать HTTP / 2-серверную рассылку, вы все равно можете реализовать сжатие заголовков HTTP / 2 с помощью Tomcat 8.5.

Только для отправки веб-ресурсов?

Нет.HTTP / 2 - это производительность, а сервер - это всего лишь одна функция :

  • - двоичная, вместо текстовой
  • полностью мультиплексирована, а не упорядоченаа блокирование
  • может поэтому использовать одно соединение для параллелизма
  • использует сжатие заголовков для уменьшения накладных расходов
  • позволяет серверам активно «вставлять» ответы в клиентские кэши

Наконец, есть также несколько связанных с этим вопросов, на которые стоит обратить внимание:

  • Хотя сам HTTP / 2 не требует использования https, на практике это требуется, поскольку в настоящее время ""ни один браузер не поддерживает HTTP / 2 в незашифрованном виде".
  • Все популярные браузеры уже полностью поддерживают HTTP / 2.
  • Насколько я знаю, нет ничего, что могло бы помешать использованию любого изосновные IDE (Intellij IDEA, Eclipse, STS, NetBeans) для разработки и тестирования функциональности HTTP / 2.
...