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 будет нативным.

С другой стороны, какая из них лучше? Нетти или Джетти для HTTP/2 звонков.

3 ответа

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

  • Нет необходимости добавлять банку ALPN в путь к загрузочному классу. Добавление maven-зависимости "netty-tcnative-boringssl-static" делает свою работу
  • Он по своей природе поддерживает асинхронную модель использования API. Следовательно, это упрощает обработку данных, передаваемых сервером в случае HTTP/2.

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

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

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

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

вы можете ссылаться на jetty-alpn / docs / version_mapping.properties https://github.com/jetty-project/jetty-alpn/blob/master/docs/version_mapping.properties

Другие вопросы по тегам