Hello,While experimented with async and non-blocking servlets, I noticed that
jetty buffers entire request before processing it in the servlet itself. I
wanted to see how to receive large request in the background on the slow
connection, without blocking request processing threads, But servlet is
invoked only when the entire request has been received and the same thread
runs the servlet and read listener. I expected read listener to be called
when new data is available on the request's input stream. Code looks like
this:
@Overrideprotected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.println(Thread.currentThread().getName()); final AsyncContext
acontext = request.startAsync(); final ServletInputStream input =
request.getInputStream(); input.setReadListener(new ReadListener() {
@Override public void onDataAvailable() throws IOException { byte
buffer[] = new byte[4*1024]; do { int length =
input.read(buffer); System.out.println("received " + length + " at "
+ Thread.currentThread().getName()); } while (input.isReady()); }
@Override public void onAllDataRead() throws IOException {
acontext.getResponse().getWriter().write("done! " +
LocalTime.now().format(DateTimeFormatter.ISO_TIME) + " at " +
Thread.currentThread().getName()); acontext.complete(); }
@Override public void onError(Throwable t) { t.printStackTrace();
} });}
I tested with the client which writes arbitrary data to HTTP connection
stream, in a loop which sleeps on each iteration.Could anyone please explain
how is this supposed to work? Is it possible to receive request without
buffering it first?Thank you!
--
View this message in context:
http://jetty.4.x6.nabble.com/jetty-request-streaming-tp4966048.html
Sent from the Jetty User mailing list archive at Nabble.com.
_______________________________________________
jetty-users mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from
this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users