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

3

最近我们安装了 JDK8。我尝试使用 SPDY 服务器运行 Jetty,但是在 JDK8 中没有 NPN 支持,因此会出现以下错误:

[qtp22068985-16-selector-ServerConnectorManager@12e7b0e/1] WARN
org.eclipse.jetty.io.SelectorManager - Exception while notifying connection SslConnection@e1448a{NEED_UNWRAP,eio=-1/-1,di=-1} ->
NPNServerConnection@382d40{IDLE}
java.lang.NoSuchMethodError:
sun.security.ssl.HandshakeHash.<init>(ZZLjava/util/Set;)V
    at sun.security.ssl.Handshaker.activate(Handshaker.java:493)

我已经在CLASSPATH上使用了npn-boot-1.1.6.v20130911.jar,它可以与最新的JDK7一起使用。

有没有什么方法可以解决在JDK8上运行Jetty时使用SPDY的问题?

1个回答

6

我是Jetty中NPN的实现者。

NPN是通过修改JDK类来实现的,因为JDK缺少TLS扩展API。 NPN版本严格匹配在文档中指定的JDK版本。

对于JDK 8,我们不计划支持NPN。 相反,我们将支持ALPN,它是NPN的后继者,并将ALPN实现向后移植到JDK 7。

ALPN的实现已经完成了一个分支,但尚未集成到主要的Jetty构建中。

您需要耐心等待一段时间,我们需要完成一堆事情并将ALPN集成到Jetty主线中。 完成后,我们将在博客上发布相关信息。


我在使用Hotspot JDK1.8u40时遇到了异常java.lang.NoSuchMethodError: sun.security.ssl.HandshakeHash.setCertificateVerifyAlg。这只适用于OpenJDK吗? - jiggy
JDK 8不支持NPN,您必须使用ALPN - sbordet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接