@Override
  public PageContext getPageContext(
      Servlet servlet,
      ServletRequest servletRequest,
      ServletResponse servletResponse,
      String errorPageURL,
      boolean needsSession,
      int buffer,
      boolean autoflush) {

    if (autoflush) {
      buffer = _JSP_WRITER_BUFFER_SIZE;
    }

    PageContext pageContext =
        _jspFactory.getPageContext(
            servlet,
            servletRequest,
            servletResponse,
            errorPageURL,
            needsSession,
            buffer,
            autoflush);

    if (_DIRECT_SERVLET_CONTEXT_ENABLED) {
      String servletPath = (String) servletRequest.getAttribute(WebKeys.SERVLET_PATH);

      if (servletPath != null) {
        servletRequest.removeAttribute(WebKeys.SERVLET_PATH);

        ServletContext servletContext = pageContext.getServletContext();

        String contextPath = servletContext.getContextPath();

        DirectServletRegistryUtil.putServlet(contextPath.concat(servletPath), servlet);
      }
    }

    return new PageContextWrapper(pageContext);
  }