protected void process(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    //        L.trace("begin process");
    String url =
        StringUtils.removeStart(
            StringUtils2.joinIgnoreNull(req.getServletPath(), req.getPathInfo()), "/");
    if (processDocument(url, req, resp)) return;

    Invoker invoker = invokers.get(url);
    if (invoker != null) {
      invoker.invoke(req, resp);
    } else {
      resp.setStatus(404); // Not Found
    }
    //        L.trace("end process");
  }