HTTP / 2 Java 8, Jetty и ALPN

Я прошел через эту страницу: https://www.eclipse.org/jetty/documentation/9.3.x/alpn-chapter.html, чтобы в моем пути к классам была загрузочная банка ALPN, но я все еще не могу заставить ее работать.

Я не понимаю, нужен ли мне Open SDK Java 8, чем Oracle Java 8.

Моя версия Java:

java -version
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)

И я использую следующие версии Jetty и загрузки ALPN:

<jetty-version>9.4.0.M1</jetty-version>
<alpn-version>8.1.9.v20160720</alpn-version>    
<dependency>
        <groupId>org.mortbay.jetty.alpn</groupId>
        <artifactId>alpn-boot</artifactId>
        <version>${alpn-version}</version>
</dependency>
<dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-client</artifactId>
    <version>${jetty-version}</version>
</dependency>
<dependency>
    <groupId>org.eclipse.jetty.http2</groupId>
    <artifactId>http2-client</artifactId>
    <version>${jetty-version}</version>
</dependency>
<dependency>
    <groupId>org.eclipse.jetty.http2</groupId>
    <artifactId>http2-http-client-transport</artifactId>
    <version>${jetty-version}</version>
</dependency>
<dependency>
    <groupId>org.eclipse.jetty.http2</groupId>
    <artifactId>http2-common</artifactId>
    <version>${jetty-version}</version>
</dependency>
<dependency>
    <groupId>org.eclipse.jetty.http2</groupId>
    <artifactId>http2-hpack</artifactId>
    <version>${jetty-version}</version>
</dependency>

Также я пробовал использовать разные версии Jetty и ALPN, которые нашел здесь https://mvnrepository.com/artifact/org.mortbay.jetty.alpn/alpn-boot и здесь https://mvnrepository.com/search?q=org.eclipse.jetty

Какие бы способы я ни пробовал, у меня так и не получилось, что он отправит запрос POST в конечную точку HTTP / 2.

Однако с Netty и следующей зависимостью мои тесты были успешными:

<dependency>
           <groupId>io.netty</groupId>
           <artifactId>netty-tcnative-boringssl-static</artifactId>
           <version>1.1.33.Fork22</version>
       </dependency>

Где найти документацию, чтобы узнать, какая версия загрузки ALPN совместима с Oracle JDK? Совместима ли загрузка ALPN только с OpenJDK?

Я читал, что начиная с Java 9 поддержка ALPN будет родной.

Кстати, какой из них лучше? Netty или Jetty для вызовов HTTP / 2.


person serverfaces    schedule 04.10.2016    source источник
comment
В таблице версий ALPN есть список от версий alpn-boot до версий java, которые вы ищете   -  person Joakim Erdfelt    schedule 04.10.2016


Ответы (2)


Netty предпочтительнее по нескольким причинам для создания соединений Http / 2. Вот несколько преимуществ, которые я увидел при его использовании:

  • Нет необходимости добавлять банку ALPN в путь к загрузочному классу. Добавление зависимости maven "netty-tcnative-boringssl-static" делает свою работу
  • Он по своей сути поддерживает асинхронную модель использования API. Следовательно, это упрощает обработку данных, отправленных сервером в случае HTTP / 2.
person Neeraj Krishna    schedule 24.03.2017
comment
Есть ли причина, по которой Netty предпочтительнее встроенной поддержки Java 9 для соединений HTTP / 2? - person Thunderforge; 27.06.2018

Загрузочная банка Jetty ALPN работает как с OpenJDK, так и с Oracle JDK (который основан на OpenJDK).

Загрузочная банка Jetty ALPN должна находиться в пути к классам boot, а не в обычном пути к классам, как указано в связанной документации.

Таким образом, вы не должны объявлять это как зависимость в ваших pom.xml файлах (в этом нет необходимости, как и вам не нужно указывать зависимость от классов JDK).

JDK 9 будет иметь встроенную поддержку ALPN, работа в этом направлении уже ведется.

person sbordet    schedule 04.10.2016
comment
Спасибо, я тоже пробовал настроить это так: -Xbootclasspath / p: /Users/foo/.m2/repository/org/mortbay/jetty/alpn/alpn-boot/8.1.5.v20150921/alpn-boot-8.1.5 .v20150921.jar - person serverfaces; 04.10.2016
comment
Вы используете JDK 8u11 (очень старый, обновите его), поэтому вы должны использовать загрузочную банку ALPN версии 8.1.0.v20141016. Вы хотите обратиться к этой таблице, чтобы узнать правильный матч JDK и ALPN. - person sbordet; 05.10.2016
comment
Что нужно для работы 9.4.x с Java 9? Опубликованы ли какие-нибудь документы? - person nilskp; 02.12.2017