我不能得到非常基本的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