Class SizeLimitHandler

All Implemented Interfaces:
Handler, HandlerContainer, Container, Destroyable, Dumpable, Dumpable.DumpableContainer, LifeCycle

public class SizeLimitHandler extends HandlerWrapper

A handler that can limit the size of message bodies in requests and responses.

The optional request and response limits are imposed by checking the Content-Length header or observing the actual bytes seen by the handler. Handler order is important, in as much as if this handler is before a the GzipHandler, then it will limit compressed sized, if it as after the GzipHandler then the limit is applied to uncompressed bytes. If a size limit is exceeded then BadMessageException is thrown with a HttpStatus.PAYLOAD_TOO_LARGE_413 status.

  • Field Details

    • _requestLimit

      private final long _requestLimit
    • _responseLimit

      private final long _responseLimit
  • Constructor Details

    • SizeLimitHandler

      public SizeLimitHandler(long requestLimit, long responseLimit)
      Parameters:
      requestLimit - The request body size limit in bytes or -1 for no limit
      responseLimit - The response body size limit in bytes or -1 for no limit
  • Method Details

    • checkRequestLimit

      protected void checkRequestLimit(long size)
    • checkResponseLimit

      protected void checkResponseLimit(long size)
    • handle

      public void handle(String target, Request baseRequest, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws IOException, javax.servlet.ServletException
      Description copied from interface: Handler
      Handle a request.
      Specified by:
      handle in interface Handler
      Overrides:
      handle in class HandlerWrapper
      Parameters:
      target - The target of the request - either a URI or a name.
      baseRequest - The original unwrapped request object.
      request - The request either as the Request object or a wrapper of that request. The HttpConnection.getCurrentConnection().getHttpChannel().getRequest() method can be used access the Request object if required.
      response - The response as the Response object or a wrapper of that request. The HttpConnection.getCurrentConnection().getHttpChannel().getResponse() method can be used access the Response object if required.
      Throws:
      IOException - if unable to handle the request or response processing
      javax.servlet.ServletException - if unable to handle the request or response due to underlying servlet issue