/* using the workmanager api (as in JSR237 etc.) * * in websphere the workmanager API is available very easy on glassfish .... not so simple * * this code is inspired by how Spring implented their TaskExecutor for GFv3, google : org.springframework.jca.work.glassfish.GlassFishWorkManagerTaskExecutor * * GFv3 Compile-time dependencies: auto-depends.jar connectors-runtime.jar connectors-internal-api.jar work-management.jar * * * if your container (eg. tomcat) does not support this take a look at CommonJ */ package dk.thoerup.asyncsamples; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javax.resource.spi.work.Work; import javax.resource.spi.work.WorkManager; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sun.enterprise.connectors.ConnectorRuntime; import com.sun.enterprise.connectors.work.CommonWorkManager; /** * Servlet implementation class WorkManager */ public class WorkManagerSample extends HttpServlet { private static final long serialVersionUID = 1L; static final Logger logger = Logger.getLogger(WorkManagerSample.class.getName()); WorkManager mgr; class MyWork implements Work { @Override public void release() { } @Override public void run() { DummyWork.doWork(); } } @Override public void init() throws ServletException { super.init(); ConnectorRuntime rt = ConnectorRuntime.getRuntime(); final String threadPoolName = "thread-pool-1"; try { mgr = new CommonWorkManager(threadPoolName, rt, null); } catch (Exception e) { logger.log(Level.SEVERE, "error", e); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { mgr.scheduleWork(new MyWork()); } catch (Exception e) { logger.log(Level.SEVERE, "error", e); } response.getWriter().print("Finished"); } }