Servlets y JSP: tutorial Jakarta EE 10 y Java 21

Los Servlets asíncronos liberan el hilo del pool de Tomcat mientras se espera una operación larga (BD, servicio externo), mejorando la escalabilidad:

@WebServlet(urlPatterns = "/datos-lentos", asyncSupported = true)
public class AsyncServlet extends HttpServlet {

    private final ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor(); // Java 21

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
        AsyncContext ctx = req.startAsync();
        ctx.setTimeout(30_000); // 30 segundos de timeout

        executor.submit(() -> {
            try {
                // Operación lenta (BD, API externa...)
                Thread.sleep(2000);
                String resultado = obtenerDatos();

                HttpServletResponse r = (HttpServletResponse) ctx.getResponse();
                r.setContentType("application/json");
                r.getWriter().println("{\"datos\": \"" + resultado + "\"}");
                ctx.complete();
            } catch (Exception e) {
                ctx.complete();
            }
        });
    }

    private String obtenerDatos() { return "ejemplo"; }
}

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR