Java Can';t在Jetty v.9.4.3中使用两个连接器(http和https)

Java Can';t在Jetty v.9.4.3中使用两个连接器(http和https),java,jetty,embedded-jetty,jetty-9,Java,Jetty,Embedded Jetty,Jetty 9,当我向嵌入式Jetty服务器添加两个连接器时,我既不能使用HTTP也不能使用HTTPS——浏览器/curl被卡住了。我用于创建嵌入式Jetty的代码大致如下(基于此示例-): 我打开了org.eclipse.jetty内的调试日志,并根据任何请求获得以下信息: Selector loop woken up from select, 0/1 selected [] [io.ManagedSelector][jetty-default-3] Running action org.eclipse.

当我向嵌入式Jetty服务器添加两个连接器时,我既不能使用HTTP也不能使用HTTPS——浏览器/curl被卡住了。我用于创建嵌入式Jetty的代码大致如下(基于此示例-):

我打开了org.eclipse.jetty内的调试日志,并根据任何请求获得以下信息:

 Selector loop woken up from select, 0/1 selected [] [io.ManagedSelector][jetty-default-3]
 Running action org.eclipse.jetty.io.ManagedSelector$Accept@4278b8a5 [][io.ManagedSelector] [jetty-default-3]
 Queued change org.eclipse.jetty.io.ManagedSelector$CreateEndPoint@535fb063 on org.eclipse.jetty.io.ManagedSelector@3959754c id=3 keys=2 selected=0 [] [io.ManagedSelector] [jetty-default-3]
 EatWhatYouKill@1289003f/org.eclipse.jetty.io.ManagedSelector$SelectorProducer@7ff1b622/PRODUCING/0/1->PRODUCING/0/1 PEC org.eclipse.jetty.io.ManagedSelector$CreateEndPoint@535fb063 [] [strategy.EatWhatYouKill] [jetty-default-3]
 Selector loop waiting on select [] [io.ManagedSelector] [jetty-default-3]
当只添加一个连接器时,一切正常


请注意,除了9.3(我使用9.4.3)中修复的jetty错误外,不要回答任何问题。

嵌入式jetty支持一台服务器上尽可能多的连接器。 Jetty没有技术限制(唯一存在的限制是您环境中的操作系统和网络堆栈)

重要的是要注意,您必须有一个健全的
HttpConfiguration
设置。 因为它们可以引用彼此的连接器。(用于“安全”行为、安全约束等)

虽然可能有多个简单的连接器彼此不知道,但这不是一般的用例

使用HTTPS(又称HTTP over TLS/SSL)时,证书(大小、类型、算法等)和密码套件选择的选择将影响您连接到该HTTPS连接器的能力

请注意,HTTPS是TLS(不是SSL),Jetty可以使用TLS的ALPN扩展,允许客户端协商实际使用的下一个协议(无论是HTTP/1.x还是HTTP/2,或者配置的下一个协议列表是什么)

下面是嵌入式Jetty中多个连接器的几个示例


您正在做什么,以及您共享的链接正在做什么都是不同的。该链接正确地使用了2个嵌套的HttpConfiguration对象,您没有。我更改了代码并使用了嵌套对象,但结果是,我启动了两个Jetty服务器,一个使用HTTP,一个使用HTTPS。HTTP工作正常,而后者在ManagedSelector中进入无限循环时不起作用,我相信。这也不正确。Joakim,你将无法以一种有意义的方式(不保存服务器/应用程序/会话/请求上下文)在http->https之间重定向,多亏了这些链接。问题根本不在于HTTPS——我不能在不同的端口上添加两个HTTP连接器——它们都不能工作。在日志中,我看到选择器循环从select唤醒,0/0选择运行操作org.eclipse.jetty.io.ManagedSelector$Accept@Queued change org.eclipse.jetty.io.ManagedSelector$CreateEndPoint@EatWhatYouKill@4148db48/org.eclipse.jetty.io.ManagedSelector$SelectorProducer Selector循环等待Selector忽略选择器循环消息,这是一个麻烦,与您的问题无关。示例
ConnectorSpecificContexts
ConnectorSpecificWebapps
添加了两个不同的HTTP连接器。
 Selector loop woken up from select, 0/1 selected [] [io.ManagedSelector][jetty-default-3]
 Running action org.eclipse.jetty.io.ManagedSelector$Accept@4278b8a5 [][io.ManagedSelector] [jetty-default-3]
 Queued change org.eclipse.jetty.io.ManagedSelector$CreateEndPoint@535fb063 on org.eclipse.jetty.io.ManagedSelector@3959754c id=3 keys=2 selected=0 [] [io.ManagedSelector] [jetty-default-3]
 EatWhatYouKill@1289003f/org.eclipse.jetty.io.ManagedSelector$SelectorProducer@7ff1b622/PRODUCING/0/1->PRODUCING/0/1 PEC org.eclipse.jetty.io.ManagedSelector$CreateEndPoint@535fb063 [] [strategy.EatWhatYouKill] [jetty-default-3]
 Selector loop waiting on select [] [io.ManagedSelector] [jetty-default-3]