We are using tomcat connector as follows --> <Connector connectionTimeout="500000" port="8080" protocol="HTTP/1.1" ...
Based on the documentation we are using the blocking call, right? So the servlet thread is blocked for IO while reading request and writing response. In case we want to use NIO, we have to specify protocol as org.apache.coyote.http11.Http11NioProtocol - non blocking Java connector, org.apache.coyote.http11.Http11AprProtocol - the APR connector. I have basic understanding of NIO. My understanding is that tomcat internally use Java NIO to read the request into buffer. When complete request is read then dispatch it to servlet for processing. That way each servlet thread is not blocked on IO. Similarly in case of response, it get response from servlet, keep buffering it and send it to client. This way servlet is not completely blocked for entire duration of the response being send to client. Please let me know if this is correct. Is there document in this regards you can point to get better understanding? I have googled, i do get many article but about NIO in general nothing specific to how tomcat handles it. Thanks in Advance. Shri