usar una puede operadores operación mvc momento metodos metodo example este ejemplos controlador comenzar carece await async asincrónica asincrono asincronico acciones java servlets concurrency

java - operadores - una operación asincrónica no se puede comenzar en este momento



Servlet parece manejar múltiples solicitudes concurrentes de navegador sincrónicamente (1)

Por lo que sé, Java Servlets está manejando múltiples solicitudes al mismo tiempo y he buscado a través de StackOverflow y de Google, y confirmé lo que pensaba. Sin embargo, estoy bastante confundido en este momento, escribí un servlets simple que parece mostrar un comportamiento de bloqueo.

entonces tengo un Servlet simple:

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"); } }

Entonces tengo 2 ventanas del navegador, abrí al mismo tiempo que golpeé mi Servlet. Y el resultado es la primera solicitud que bloquea el 2º. El registro también muestra:

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

Siento que me falta algo ... Se supone que Servlets puede manejar pedidos simultáneos, pero parece que no lo está haciendo. También hice lo mismo que el anterior en el método de servicio en lugar de doGet y hace lo mismo.

¿Alguna sugerencia?

Gracias


Su navegador aparentemente está usando la misma conexión HTTP en diferentes ventanas. El contenedor de servlets usa un único hilo por conexión HTTP, no por solicitud HTTP. Debes ejecutar dos webbrowsers físicamente diferentes para probar esto correctamente. Por ejemplo, un Firefox y un Chrome.