Class DataRateLimitedServlet

  • All Implemented Interfaces:
    jakarta.servlet.Servlet, jakarta.servlet.ServletConfig, java.io.Serializable

    public class DataRateLimitedServlet
    extends jakarta.servlet.http.HttpServlet
    A servlet that uses the Servlet 3.1 asynchronous IO API to server static content at a limited data rate.

    Two implementations are supported:

    • The StandardDataStream impl uses only standard APIs, but produces more garbage due to the byte[] nature of the API.
    • the JettyDataStream impl uses a Jetty API to write a ByteBuffer and thus allow the efficient use of file mapped buffers without any temporary buffer copies (I did tell the JSR that this was a good idea to have in the standard!).

    The data rate is controlled by setting init parameters:

    buffersize
    The amount of data in bytes written per write
    pause
    The period in ms to wait after a write before attempting another
    pool
    The size of the thread pool used to service the writes (defaults to available processors)
    Thus if buffersize = 1024 and pause = 100, the data rate will be limited to 10KB per second.
    See Also:
    Serialized Form
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void destroy()  
      protected void doGet​(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response)  
      void init()  
      • Methods inherited from class jakarta.servlet.http.HttpServlet

        doDelete, doHead, doOptions, doPost, doPut, doTrace, getLastModified, service, service
      • Methods inherited from class jakarta.servlet.GenericServlet

        getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • DataRateLimitedServlet

        public DataRateLimitedServlet()
    • Method Detail

      • init

        public void init()
                  throws jakarta.servlet.ServletException
        Overrides:
        init in class jakarta.servlet.GenericServlet
        Throws:
        jakarta.servlet.ServletException
      • destroy

        public void destroy()
        Specified by:
        destroy in interface jakarta.servlet.Servlet
        Overrides:
        destroy in class jakarta.servlet.GenericServlet
      • doGet

        protected void doGet​(jakarta.servlet.http.HttpServletRequest request,
                             jakarta.servlet.http.HttpServletResponse response)
                      throws jakarta.servlet.ServletException,
                             java.io.IOException
        Overrides:
        doGet in class jakarta.servlet.http.HttpServlet
        Throws:
        jakarta.servlet.ServletException
        java.io.IOException