首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTP/2 Java 8、Jetty和ALPN

HTTP/2 Java 8、Jetty和ALPN
EN

Stack Overflow用户
提问于 2016-10-04 16:03:14
回答 2查看 12.5K关注 0票数 3

我浏览了这个页面:https://www.eclipse.org/jetty/documentation/9.3.x/alpn-chapter.html在我的类路径中有一个ALPN引导罐,但是我仍然无法让它工作。

我不知道是否需要Open 8而不是Oracle Java 8。

我的Java版本是:

代码语言:javascript
复制
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引导:

代码语言:javascript
复制
<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-boothttps://mvnrepository.com/search?q=org.eclipse.jetty

无论我尝试哪种方式,我都无法让它工作,将POST请求提交到HTTP/2端点。

但是,对于Netty和下面的依赖项,我的测试是成功的:

代码语言:javascript
复制
<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调用的Netty或Jetty。

EN

回答 2

Stack Overflow用户

发布于 2017-03-24 09:28:27

由于建立Http/2连接的几个原因,Netty是首选。我看到使用它的几个优点是:

  • 不需要将ALPN jar添加到引导类路径中。添加maven依赖项“netty-tc本机-boringssl-静态”可以完成此任务。
  • 它本质上支持使用API的异步模型。因此,在HTTP/2情况下,处理服务器推送的数据变得更简单
票数 4
EN

Stack Overflow用户

发布于 2016-10-04 17:58:48

Jetty的ALPN引导jar同时适用于OpenJDK和甲骨文的JDK (基于OpenJDK)。

Jetty的ALPN引导jar必须在引导类路径中,而不是常规的类路径中,就像您链接的文档说的那样。

因此,您不能在pom.xml文件中将其声明为依赖项(不需要指定依赖于JDK类)。

JDK 9将支持本机ALPN,在这方面已经有了一些工作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39856972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档