package com.github.signed.sandboxes.jee.webservlet; import java.io.IOException; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import javax.ejb.EJB; import javax.inject.Inject; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.github.signed.sandboxes.jee.async.AsyncBean; @WebServlet(name = "AsyncTestServlet", urlPatterns = {"/async"}) public class AsyncTestServlet extends HttpServlet { @Inject AsyncBean asyncBean; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("caller method running in thread " + Thread.currentThread().getName()); Future<String> future = asyncBean.asyncMethod(); try { response.getWriter().append(future.get()); } catch (InterruptedException | ExecutionException e) { response.getWriter().append("fail"); } System.out.println("caller method returned in thread " + Thread.currentThread().getName()); } }