code: public void request(final String method, final HttpServletRequest request,
                          final HttpServletResponse response) throws ServletException, IOException {
  
          String id = null;
          try{
              requests.set(request);
              id = Session.start(getSessionId(request,response));
  
              long t = System.currentTimeMillis();
              try {
                  String requestId = UUID.randomUUID().toString();
  
                  // set MDC
                  MDC.put("requestId", requestId);
  
                  logRequest(method, request);
  
                  I params = parseInput(request);
                  logInParams(params);
  
                  //check access
                  checkAccess(method, params, request);
  
                  O out = process(method, params, request, response);
  
                  if (out != null) {
                      logOut(out);
                      formatOutput(out, false, request, response);
                  }
              } catch (Throwable e) {
                  logError(e);
                  try {
                      O out = transformError(e, request, response);
                      formatOutput(out, true, request, response);
                  } catch (Exception ex) {
                      LOG.error("Error preparing exception output", ex);
                  }
              }
              logResult(System.currentTimeMillis() - t);
          }finally {
              requests.remove();
              Session.end(id);
          }
      }
docs: Main method, that makes request processing. Called from DispatcherServlet
  
  @param method
  @param request
  @param response
  @throws javax.servlet.ServletException
  @throws java.io.IOException