>> Hi Chris, >> Servlet 3.1 spec defines that ServletInputStream can be used to read as >> non-blocking way as long as there is data ready locally by calling isReady >> method and check the ready condition before calling read, and read should >> throw IllegalStateException if called by caller when data is not ready > > The above only applies if the servlet is in async mode. Is it?
correct, when it’s running as async mode Andrew > On Sep 21, 2021, at 11:17 PM, Mark Thomas <[email protected]> wrote: > > On 21/09/2021 23:01, Javateck wrote: >> Hi Chris, >> Servlet 3.1 spec defines that ServletInputStream can be used to read as >> non-blocking way as long as there is data ready locally by calling isReady >> method and check the ready condition before calling read, and read should >> throw IllegalStateException if called by caller when data is not ready > > The above only applies if the servlet is in async mode. Is it? > > Mark > > >> Agree that InputStream read api is blocking by nature, but if the data is >> already there in local buffer, then it’s not, it’s just exposing as >> ServletInputStream >> https://javaee.github.io/servlet-spec/downloads/servlet-3.1/Final/servlet-3_1-final.pdf >> >> <https://javaee.github.io/servlet-spec/downloads/servlet-3.1/Final/servlet-3_1-final.pdf> >> >> <https://javaee.github.io/servlet-spec/downloads/servlet-3.1/Final/servlet-3_1-final.pdf >> >> <https://javaee.github.io/servlet-spec/downloads/servlet-3.1/Final/servlet-3_1-final.pdf>> >>> On Sep 21, 2021, at 2:26 PM, Christopher Schultz >>> <[email protected] <mailto:[email protected]>> wrote: >>> >>> Andrew, >>> >>> On 9/21/21 13:54, Javateck wrote: >>>> Hi, >>>> With NIO connector with Servlet 3.1 support, I’m registering with a >>>> ReadListener, while it got the first read signal from tomcat container (I >>>> tried 9.0.19 and 9.0.53), the read call is blocked after isReady returns >>>> true >>>> if (ServletInputStream.isReady()) { >>>> ServletInputStream.read(buffer); // this becomes blocking >>>> } >>>> I tried with jetty, it’s working fine >>>> When I did the test, I was holding the sending packet from client side >>>> Not sure whether anyone has tried this >>> >>> InputStream is always blocking. >>> >>> Are you trying to use async? That's not the way to use async... >>> >>> -chris >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [email protected] >>> For additional commands, e-mail: [email protected] >>> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > <mailto:[email protected]> > For additional commands, e-mail: [email protected] > <mailto:[email protected]>
