Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jetty 9.0嵌入配置,带SPDY,但不带SSL/NPN_Jetty_Embedded Jetty_Spdy_Jetty 9 - Fatal编程技术网

Jetty 9.0嵌入配置,带SPDY,但不带SSL/NPN

Jetty 9.0嵌入配置,带SPDY,但不带SSL/NPN,jetty,embedded-jetty,spdy,jetty-9,Jetty,Embedded Jetty,Spdy,Jetty 9,SSL/NPN将通过我们的负载平衡器(Haproxy)进行处理,所以我并不需要Jetty为我们做这件事 但是,我在web上看到的所有示例都只展示了如何使用SSL/NPN实现这一点,而不是不使用SSL/NPN 以下是我迄今为止所做的尝试: Server server = new Server(); HTTPConfiguration httpConfig = .... // set up some additional http config here PushStrategey push = n

SSL/NPN将通过我们的负载平衡器(Haproxy)进行处理,所以我并不需要Jetty为我们做这件事

但是,我在web上看到的所有示例都只展示了如何使用SSL/NPN实现这一点,而不是不使用SSL/NPN

以下是我迄今为止所做的尝试:

Server server = new Server();
HTTPConfiguration httpConfig = .... // set up some additional http config here
PushStrategey push = new ReferrerPushStrategy();
List<ConnectionFactory> factories = new ArrayList<>();
factories.add(new HTTPSPDYServerConnectionFactory(SPDY.V3, httpConfig, push));
factories.add(new HTTPSPDYServerConnectionFactory(SPDY.V2, httpConfig, push));
factories.add(new HTTPConnectionFactory(httpConfig));
ServerConnector connector = new ServerConnector(server, factories.toArray(new ConnectionFactory[factories.size()]));
connector.setPort(port);
server.addConnector(connector);
connector.start();
....
Server=newserver();
HTTPConfiguration httpConfig=..//在这里设置一些额外的http配置
PushStrategyy push=新的ReferrerPushStrategy();
列表工厂=新的ArrayList();
add(新的HTTPSPDYServerConnectionFactory(SPDY.V3,httpConfig,push));
add(新的HTTPSPDYServerConnectionFactory(SPDY.V2,httpConfig,push));
添加(新的HTTPConnectionFactory(httpConfig));
ServerConnector连接器=新的ServerConnector(服务器,factories.toArray(新的ConnectionFactory[factories.size());
连接器。设置端口(端口);
addConnector(连接器);
connector.start();
....
不幸的是,当我试图通过客户机(如curl或我的浏览器)访问服务器时,它们会无限期地挂起,这似乎是错误的。我做错了什么


谢谢

当您将
服务器连接器
配置为说明文SPDY时,您的客户端也必须说明文SPDY

如果您使用像
curl
这样的客户端或浏览器,它们不会说明文。客户端将发送一个无法理解的HTTP请求(服务器需要SPDY),这就是连接“挂起”的原因

只有Chrome/Chrome具有一种模式,您可以使用所述的
--use SPDY=no ssl
参数使其说出明文SPDY

因此,如果您使用的是明文SPDY,那么配置多个
ServerConnectionFactory
是没有意义的,因为没有协议协商,无法根据协商的协议选择一个

协议协商仅在使用SSL+NPN时发生

如果确实要设置明文SPDY
ServerConnector
,则代码基本正确(除了不必要的多个
ServerConnectionFactory
);是如何在SPDY测试套件中设置相同的示例


最后,请参见。

当然,谢谢,这是有道理的。这是否意味着我必须为我们想要支持的每个SPDY版本打开单独的连接器/端口?我想在这种情况下,在负载平衡器上而不是在Jetty上实现SPDY和SSL/NPN更有意义,尽管在这种情况下很难实现有用的推送策略。这取决于负载平衡器。那些能够在卸载SSL后将明文SPDY“隧道”到后端的系统将允许客户端受益于Jetty中的SPDY功能,例如多路复用和SPDY推送,而不会使负载平衡器与SPDY功能混淆。例如,以这种方式配置,将用作负载平衡器。在这种情况下,我只会宣传一个SPDY版本;大多数(如果不是所有的话)浏览器都支持SPDY/3,所以仍然支持SPDY/2没有什么意义。@sbordet我有一个关于jetty 9.0和SPDY的问题,但不知怎的,我无法理解。我们可以使用jetty 9.0和SPDY以及solr zookeeper吗?我一直在尝试这样做,但不知何故,如果我在jetty 9.0中添加模块spdy,zookeeper服务器甚至无法启动。如果你能帮助我,我将不胜感激。我也发布了一个关于它的问题,