簡體   English   中英

如何使用ALPN在SPDY上運行Jetty?

[英]How to run Jetty with SPDY using ALPN?

我回到了帶有Jetty和SPDY的JDK8,並且看到現在Jetty 9.2支持ALPN協議而不是NPN(請參閱我的問題如何在JDK8上使用SPDY運行Jetty? )。 所以我設置了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"和碼頭9.2.2.v20140723。

我在WinXP上使用JDK 1.7和alpn-boot-7.0.0.v20140317.jar遇到了相同的錯誤,如果從-Xbootclasspath/p:c:/jars/npn-boot/npn-boot-1.1.7.v20140316.jar我更改了該錯誤-Xbootclasspath/p:c:/jars/npn-boot/npn-boot-1.1.7.v20140316.jar

此執行在我的代碼中指向:

SSLconnector = new HTTPSPDYServerConnector(server, sslContextFactory);

似乎即使使用ALPN碼頭也需要npn-boot中的類。 是錯誤還是我做錯了什么?

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();

我將其跟蹤為https://bugs.eclipse.org/bugs/show_bug.cgi?id=440756

最后,如果您不直接使用代碼,而是將Jetty用作服務器並將Webapp部署到該服務器,Jetty已經根據激活的模塊正確配置了ALPN或NPN。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM