Async Servlet Feature of Servlet 3

About Pankaj Kumar

Before we jump into understanding what Async Servlet is, let’s try to understand why do we need it. Let’s say we have a Servlet that takes a lot of time to process, something like below.
 
 
 
 
 
 
 
 

LongRunningServlet.java

package com.journaldev.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet("/LongRunningServlet")public class LongRunningServlet extends HttpServlet {	private static final long serialVersionUID = 1L;	protected void doGet(HttpServletRequest request,			HttpServletResponse response) throws ServletException, IOException {		long startTime = System.currentTimeMillis();		System.out.println("LongRunningServlet Start::Name="				+ Thread.currentThread().getName() + "::ID="				+ Thread.currentThread().getId());		String time = request.getParameter("time");		int secs = Integer.valueOf(time);		// max 10 seconds		if (secs > 10000)			secs = 10000;		longProcessing(secs);		PrintWriter out = response.getWriter();		long endTime = System.currentTimeMillis();		out.write("Processing done for " + secs + " milliseconds!!");		System.out.println("LongRunningServlet Start::Name="				+ Thread.currentThread().getName() + "::ID="				+ Thread.currentThread().getId() + "::Time Taken="				+ (endTime - startTime) + " ms.");	}	private void longProcessing(int secs) {		// wait for given time before finishing		try {			Thread.sleep(secs);		} catch (InterruptedException e) {			e.printStackTrace();		}	}}

Source : http://www.javacodegeeks.com/2013/08/async-servlet-feature-of-servlet-3.html

Back to Top