Servlet sembra gestire più richieste di browser simultanee in modo sincrono

Per quanto ne so, Java Servlet sta gestendo più richieste contemporaneamente e ho cercato attraverso StackOverflow così come Google, e ho confermato ciò che pensavo. Tuttavia, al momento sono abbastanza confuso, ho scritto una semplice servlet che sembra mostrare un comportamento di blocco.

quindi ho un semplice 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"); } } 

Poi ho 2 windows del browser, che ho aperto nello stesso momento in cui ho colpito il mio Servlet. E il risultato è la prima richiesta che blocca il 2 °. Il registro mostra anche:

 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 

Mi sento come se mi mancasse qualcosa … Servlet dovrebbe essere in grado di gestire richieste concorrenti, ma non sembra che lo stia facendo. Ho anche fatto lo stesso di sopra del metodo di servizio invece di DoGet e fa la stessa cosa.

Qualche indicazione?

Grazie

A quanto pare, il tuo browser utilizza la stessa connessione HTTP in windows diverse. Il contenitore servlet utilizza un singolo thread per connessione HTTP, non per richiesta HTTP. Dovresti eseguire due browser diversi fisicamente per verificarlo correttamente. Ad esempio un Firefox e uno Chrome.