我不能得到非常基本的Undertow示例按預期工作。以下代碼應該允許提供併發HTTP請求。實際發生的情況是,只有一個請求被處理,並且在第一個請求完成之前,沒有其他請求可以通過。Undertow阻止操作與調度不起作用
public class MainUT {
public static void main(String[] args) {
Undertow.builder()
.addHttpListener(8080, "localhost")
.setHandler(new HttpHandler() {
@Override
public void handleRequest(final HttpServerExchange exchange)
throws Exception {
if(exchange.isInIoThread()){
exchange.dispatch(this);
return;
}
exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
exchange.getResponseSender().send("Hello World");
}
}).build().start();
}
}
我在想什麼?
我使用Chrome來執行GET請求,並在請求分派後暫停調試器。然後發出一個curl
命令
curl http://localhost:8080
curl命令只有在瀏覽器請求被徹底服了返回。
我測試了這兩個HTTP
和HTTPS
聽衆。
增加XNIO線程編號及其工作人員不會改變任何內容。隨機的XNIO被分配給請求。然後在調度後分配一個隨機工作人員。服務器保持阻塞狀態,直到請求被提供。
你的代碼看起來沒問題。任何錯誤?行爲?你是如何測試它的?什麼是您的HTTP客戶端? – Azeem
沒有錯誤。當從Chrome發佈GET請求時,它會阻止任何其他請求,直到完成。 –
您的瀏覽器忙嗎?你怎麼同時請求? – Azeem