package brave.http; import java.io.IOException; import javax.servlet.AsyncContext; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; public abstract class ITServlet3Container extends ITServlet25Container { static class AsyncServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) { AsyncContext ctx = req.startAsync(); ctx.start(ctx::complete); } } static class ExceptionAsyncServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { AsyncContext ctx = req.startAsync(); ctx.setTimeout(1); ctx.start(() -> { try { Thread.sleep(10L); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } finally { ctx.complete(); } }); } } @Override public void init(ServletContextHandler handler) { super.init(handler); // add servlet 3.0+ handler.addServlet(new ServletHolder(new AsyncServlet()), "/async"); handler.addServlet(new ServletHolder(new ExceptionAsyncServlet()), "/exceptionAsync"); } }