使用开箱即用的 SPDY 运行 Jetty

Posted

技术标签:

【中文标题】使用开箱即用的 SPDY 运行 Jetty【英文标题】:run Jetty with SPDY out-of-the-box 【发布时间】:2015-04-10 12:00:05 【问题描述】:

我从 Tomcat 切换到 Jetty 作为 ServletContainer 并尝试使用所有默认设置启用 SPDY。这是我启用 SPDY 的步骤:

    我下载并解压jetty 我在 webapps 和一些仅特定于项目的部署描述符中复制了一个 .war 文件。

    (现在是棘手的部分)我通过执行以下命令启用 SPDY:

    java -jar start.jar --add-to-startd=spdy

我接受不受信任的 protonego-impl 并且现在存在 start.d/spdy.ini 文件。

    现在启动码头:

    java -jar start.jar

另外,我通过在 etc/protonego-alpn.xml 中取消注释命令来启用一些调试:

<Set class="org.eclipse.jetty.alpn.ALPN" name="debug" type="boolean">true</Set>

在服务器启动时我得到:

2015-02-10 13:22:10.292:INFO:oejs.ServerConnector:main: 已启动 ServerConnector@5841a6a3HTTP/1.10.0.0.0:8080 2015-02-10 13:22:10.387:INFO:oejs.ServerConnector:main: 启动 ServerConnector@5c9f2ea4SSL-alpn0.0.0.0:8443

这告诉我在 8080 端口上运行普通 HTTP,在 8443 上运行支持以下协议的 ALPN:spdy/3、spdy/2、http/1.1。 但是,如果我从我的项目访问 HTTPS 页面,我会得到以下信息:

[S] ALPN 协议 [spdy/3.1, http/1.1] 从客户端接收到 783e3eb9[SSLEngine[hostname=127.0.0.1 port=50458] SSL_NULL_WITH_NULL_NULL] [S] 为 783e3eb9 选择了 ALPN 协议“http/1.1”[SSLEngine[hostname=127.0.0.1 port=50458] SSL_NULL_WITH_NULL_NULL]

我理解上面所说的服务器支持spdy/3.1和http/1.1被选中。但是删除除 spdy/3 之外的所有连接我得到了 EofExceptions 并且无法访问 HTTPS 页面。

我使用 Java JDK 1.7 和 Chrome 以及 SPDY-Indicator 和 Jetty 9.2.5 以及 XML 上的所有配置。 有人可以帮助我或告诉更多关于这个问题的信息吗? 哦,不需要使用 ALPN,我想要 spdy,而这背后的技术目前是不必要的。

【问题讨论】:

我在转换 xml 配置表示中的代码后尝试以下解决方案,但我看不到 spdy 连接。 ***.com/questions/25035063/… 【参考方案1】:

Jetty 不支持SPDY/3.1,只支持SPDY/3

事实上,Jetty 永远不会支持SPDY/3.1

SPDY 和 NPN 刚刚在即将发布的 Jetty 9.3.0 版本中从代码树中删除。

http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/commit/?id=2162455b72d5a474bba47d5daf5543d46c2688be

【讨论】:

好的。它不需要使用 spdy/3.1。我想使用 spdy 并且直接版本并不重要。你知道为什么我没有 spdy 连接吗? @Happo 浏览器正在协商 spdy/3.1 和 http/1.1,服务器可以说 spdy/3.0 和 http/1.1,所以协议协商选择 http/1.1 作为唯一共同的协议。如果你想利用 SPDY 的好处,我建议你改用 HTTP/2,因为所有支持 SPDY 的浏览器也支持 HTTP/2,Jetty 9.3.0 也支持 HTTP/2。

以上是关于使用开箱即用的 SPDY 运行 Jetty的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JDK8 上使用 SPDY 运行 Jetty?

开箱即用的分布式作业队列解决方案

无法在本地群集上运行库存SF容器开箱即用

在 Apache 防火墙后面运行 SPDY 的 Jetty 服务器

Jetty:可以使用 SPDY/3.1 吗?

未捕获的错误:找不到模块“ember-qunit”。奇怪的开箱即用的 ember-cli 行为