我带着Jetty和SPDY回到了JDK8,我看到现在Jetty9.2支持ALPN协议而不是NPN (参见我的问题How to run Jetty with SPDY on JDK8?)。所以我设置了bootclasspath
java -Xbootclasspath/p:c:/jars/alpn-boot/alpn-boot-8.0.0.v2014031 ...但现在我有了例外:
Exception in thread "xyz.server" java.lang.NoClassDefFoundError:
org/eclipse/jetty/npn/NextProtoNego$ServerProvider
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
...
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.eclipse.jetty.spdy.server.http.HTTPSPDYServerConnector.<init>(HTTPSPDYServerConnector.java:63)
at org.eclipse.jetty.spdy.server.http.HTTPSPDYServerConnector.<init>(HTTPSPDYServerConnector.java:53)
at org.eclipse.jetty.spdy.server.http.HTTPSPDYServerConnector.<init>(HTTPSPDYServerConnector.java:43)
at xyz.my.my_httpsrv_jetty.startHTTPSServer(my_httpsrv_jetty.java:359)
...我使用java version "1.8.0_05"和Jetty9.2.2.v20140723。
与JDK1.7和alpn-boot-7.0.0.v20140317.jar在WinXP上的错误相同,如果从-Xbootclasspath/p:c:/jars/npn-boot/npn-boot-1.1.7.v20140316.jar中更改
在我的代码中,这一删除点包含以下内容:
SSLconnector = new HTTPSPDYServerConnector(server, sslContextFactory);看起来,即使有ALPN,jetty也需要npn引导的类。是窃听器还是我做错了什么?
发布于 2014-07-30 12:12:26
HTTPSPDYServerConnector没有被更新为ALPN,并且目前硬编码使用NPN。
为了在SPDY中使用ALPN,您必须以这样的方式配置ServerConnector:
SslContextFactory sslContextFactory = new SslContextFactory();
HttpConfiguration httpConfig = new HttpConfiguration();
SslConnectionFactory ssl = new SslConnectionFactory(sslContextFactory, "alpn");
ALPNServerConnectionFactory alpn = new ALPNServerConnectionFactory("spdy/3", "http/1.1");
alpn.setDefaultProtocol("http/1.1");
HTTPSPDYServerConnectionFactory spdy = new HTTPSPDYServerConnectionFactory(SPDY.V3, httpConfig);
HttpConnectionFactory http = new HttpConnectionFactory(httpConfig);
Server server = new Server();
ServerConnector connector = new ServerConnector(server, new ConnectionFactory[]{ssl, alpn, spdy, http});
server.start();我追踪到这个是bug.cgi?id=440756。
最后,如果您不直接使用代码,而是使用Jetty作为服务器并向其部署NPN应用程序,Jetty已经根据激活的模块正确配置ALPN或NPN。
https://stackoverflow.com/questions/25035063
复制相似问题