使用开箱即用的 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的主要内容,如果未能解决你的问题,请参考以下文章