码头 HTTP/2 客户端示例

Posted

技术标签:

【中文标题】码头 HTTP/2 客户端示例【英文标题】:Jetty HTTP/2 Client example 【发布时间】:2015-11-30 16:45:50 【问题描述】:

我使用了 Jetty 提供给我们的客户端代码。并且出现了一些问题。 我要运行的代码在这里 https://github.com/eclipse/jetty.project/blob/master/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/Client.java

实际上我知道我遇到了同样的问题 Jetty HTTP/2 client receive server push example 我停在这家伙的更新 2 上,我在 http2-client 文件夹下建立了一个新项目。但问题依然存在。

INFO::main: Logging initialized @170ms
Exception in thread "main" java.util.concurrent.TimeoutException
at org.eclipse.jetty.util.FuturePromise.get(FuturePromise.java:130)
at org.eclipse.jetty.http2.client.Client.main(Client.java:56)

我使用的jar是Jetty-9.3.3。我完全不知道出了什么问题。 开发环境是eclipse luna。

【问题讨论】:

确保:A) 您的引导类路径中有 ALPN 引导 jar; B) 您正在联系的服务器是否支持 HTTP/2; C) 如果使用 TLS,您正在联系的服务器会发送一个有效的、可验证的证书。为“org.eclipse.jetty”类别启用 DEBUG 日志记录级别,您将获得很多关于正在发生的事情的信息。此外,设置 ALPN.debug=true 以了解 ALPN 是否正常工作。 谢谢你,sbordet。看来您是 Jetty 的开发者。我现在正在使用 Jetty 来研究 http/2。非常感谢,Jetty 对 http/2 给予大力支持。但我认为最新的 ALPN boot jar 8.1.4 似乎不起作用,发布日期是 20150727。当我尝试 8.1.3 时,一切正常。你能看看这个问题吗?谢谢 您需要更准确地了解哪些不起作用,因为它确实对我们有用。请加入Jetty mailing list 以获得在 SO cmets 中不可能进行的更详细的讨论。谢谢! 我遇到了同样的问题,我刚刚开始在 jetty-users 邮件列表上进行讨论。见dev.eclipse.org/mhonarc/lists/jetty-users/msg06302.html如果我能解决问题,我会在这里发布答案。 【参考方案1】:

确保您将 ALPN jar 添加到引导类路径,并且该 jar 是您的 Java 版本的正确版本。见此表:https://www.eclipse.org/jetty/documentation/current/alpn-chapter.html#alpn-versions

如果您使用的是 Java 版本“1.8.0_51”,那么额外的 VM 参数应该是:

-Xbootclasspath/p:/full/path/to/alpn-boot-8.1.4.v20150727.jar

我遇到了同样的超时异常,在我的情况下,结果证明我没有正确地将 alpn-boot jar 添加到引导类路径中。具体来说,我没有使用 jar 的完整绝对路径。如果引导类路径无效,VM 不会给出任何错误。提供绝对路径为我解决了这个问题。

【讨论】:

以上是关于码头 HTTP/2 客户端示例的主要内容,如果未能解决你的问题,请参考以下文章

码头 WebSocket 服务器

使用码头 Http 客户端发送 Https 请求中的 NullPointerException

码头 websocket 中的 ProtocolException 是啥意思?

如何使用码头设置 2 路 SSL 身份验证连接

使用 jersey-client 发送到码头的压缩 GZIP 请求不适用于 FormDataMultiPart

HTTP/2 Java 8、码头和 ALPN