Machiel Groeneveld wrote:
I have a question about the blocking IO. In the documentation there
is
mention of the startBlocking call but not of spinning threads. I'm
mentioning this because in the FileResource.java (a supplied handler in
undertow) the file seems to be served from a new thread.
The file is served from a new thread as reading the file from disk can
block.
I currently have this:
public void handleRequest(HttpServerExchange exchange) throws Exception {
if (exchange.isInIoThread()) {
exchange.dispatch(this);
return;
}
exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
exchange.startBlocking();
OutputStream out = exchange.getOutputStream();
writeToStream(out); //query database and write rows to out
exchange.endExchange();
}
This looks fine, but there is no guarantee that the response will be
chunked. The OutputStream has a buffer, so if the response is smaller
than the buffer then it will set a content-length header, otherwise it
will use chunked encoding. If you want to force chunked encoded you can
just call flush() on the stream or set the Transfer-Encoding header,
although in general fixed length will perform better.
Stuart
is this the way to correctly write a chunked http response?
_______________________________________________
undertow-dev mailing list
undertow-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/undertow-dev