As far as I know Java Servlets are handling multiple requests concurrently and I've searched through StackOverflow as well as Google, and confirmed what I thought. However I am quite confused right now, I wrote a simple servlets that seem to show blocking behaviour.
so I have a simple Servlet:
public class MyServlet extends HttpServlet 
{
    private static final long serialVersionUID = 2628320200587071622L;
    private static final Logger logger = Logger.getLogger(MyServlet.class);
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 
    {
        logger.info("[doGet] Test before");
        try {
            Thread.sleep(60000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        logger.info("[doGet] Test after");
        resp.setContentType("text/plain");
        resp.getWriter().write("OK");
    }
}
Then I have 2 browser windows, I opened at the same time that hit my Servlet. And the result is the first request blocking the 2nd one. The log also shows:
10:49:05,088 [http-8383-Processor14]  INFO MyServlet - [doGet] Test before
10:50:05,096 [http-8383-Processor14]  INFO MyServlet - [doGet] Test after
10:50:05,106 [http-8383-Processor22]  INFO MyServlet - [doGet] Test before
10:51:05,112 [http-8383-Processor22]  INFO MyServlet - [doGet] Test after
I feel like I am missing something ... Servlets supposed to be able to handle concurrent request, but it doesnt seem to be doing it. I also did the same as above on the service method instead of doGet and it does the same thing.
Any pointers?
Thanks
 
     
    