我从 Tomcat 切换到 Jetty 作为 ServletContainer,并尝试使用 Jetty 的所有默认设置启用 SPDY。这是我启用 SPDY 的步骤:
- 我下载并解压 jetty
- 我在 webapps 和一些部署描述符中复制了一个 .war 文件,它们只是特定于项目的。
(现在是棘手的部分)我通过执行以下命令启用 SPDY:
java -jar start.jar --add-to-startd=spdy
我接受不受信任的 protonego-impl 并且现在存在一个 start.d/spdy.ini 文件。
现在开始 jetty :
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: Started ServerConnector@5841a6a3{HTTP/1.1}{0.0.0.0:8080} 2015-02-10 13:22:10.387:INFO:oejs.ServerConnector:main: Started ServerConnector@5c9f2ea4{SSL-alpn}{0.0.0.0:8443}
它告诉我在端口 8080 上运行正常的 HTTP,在 8443 上运行支持以下协议(protocol)的 ALPN:spdy/3、spdy/2、http/1.1。 但是,如果我从我的项目访问 HTTPS 页面,我会得到以下信息:
[S] ALPN protocols [spdy/3.1, http/1.1] received from client for 783e3eb9[SSLEngine[hostname=127.0.0.1 port=50458] SSL_NULL_WITH_NULL_NULL] [S] ALPN protocol 'http/1.1' selected for 783e3eb9[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 和带有 SPDY-Indicator 和 Jetty 9.2.5 的 Chrome 以及基于 XML 的所有配置。 有人可以帮助我或告诉我更多关于这个问题的信息吗? 哦,它不需要使用 ALPN,我想要 spdy,而这背后的技术目前是不必要的。
最佳答案
Jetty 不支持SPDY/3.1
,只支持SPDY/3
。
事实上,Jetty 永远不会支持SPDY/3.1
。
在即将发布的 Jetty 9.3.0 版本中,SPDY 和 NPN 刚刚从代码树中删除。
关于ssl - 开箱即用地使用 SPDY 运行 Jetty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28431921/