RequestTracingFilter.doFilterInternal(HttpServletRequest, HttpServletResponse, FilterChain) to make sure this filter's logic is only executed once per request.RequestDispatcher.ERROR_REQUEST_URI.ServletRequest.setAttribute(String, Object) the first time this filter is run for any given request.Span for the request.Span objects extracted from a HttpServletRequest.javax.servlet.DispatcherType.ASYNC introduced in Servlet 3.0 means a filter can be invoked in more than one thread over
the course of a single request.RequestTracingFilter for use in environments where async request processing is not used.HttpServletRequest so that it can be used as a RequestWithHeaders.