首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ALPN使用SPDY运行Jetty?

如何使用ALPN使用SPDY运行Jetty?
EN

Stack Overflow用户
提问于 2014-07-30 10:57:29
回答 1查看 3.4K关注 0票数 3

我带着Jetty和SPDY回到了JDK8,我看到现在Jetty9.2支持ALPN协议而不是NPN (参见我的问题How to run Jetty with SPDY on JDK8?)。所以我设置了bootclasspath

代码语言:javascript
复制
java -Xbootclasspath/p:c:/jars/alpn-boot/alpn-boot-8.0.0.v2014031 ...

但现在我有了例外:

代码语言:javascript
复制
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中更改

在我的代码中,这一删除点包含以下内容:

代码语言:javascript
复制
SSLconnector = new HTTPSPDYServerConnector(server, sslContextFactory);

看起来,即使有ALPN,jetty也需要npn引导的类。是窃听器还是我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-30 12:12:26

HTTPSPDYServerConnector没有被更新为ALPN,并且目前硬编码使用NPN。

为了在SPDY中使用ALPN,您必须以这样的方式配置ServerConnector

代码语言:javascript
复制
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。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25035063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档