Class DataRateLimitedServlet

  • All Implemented Interfaces:
    Serializable, Servlet, ServletConfig

    public class DataRateLimitedServlet
    extends 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