/* Using the managedExecutorServcice (as in JSR236 / JEE7 ) * * If your container (eg tomcat) doesnt support this you may revert to a standart ExecutorService * https://martinsdeveloperworld.wordpress.com/2014/02/25/using-java-ees-managedexecutorservice-to-asynchronously-execute-transactions/ */ package dk.thoerup.asyncsamples; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javax.annotation.*; import javax.enterprise.concurrent.*; import javax.servlet.annotation.*; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet( urlPatterns = "/Jsr236") public class Jsr236 extends HttpServlet { private static final long serialVersionUID = 1L; static final Logger logger = Logger.getLogger(WorkManagerSample.class.getName()); @Resource private ManagedExecutorService managedExecutorService; class MyWork implements Runnable { @Override public void run() { DummyWork.doWork(); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { managedExecutorService.submit( new MyWork() ); response.getWriter().print("Finished"); } }