in Elastiflix/java-favorite-otel-manual/src/main/java/com/movieapi/TracingFilter.java [39:60]
protected void doFilterInternal(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.FilterChain filterChain) throws jakarta.servlet.ServletException, IOException {
Tracer tracer = GlobalOpenTelemetry.getTracer(SERVICE_NAME);
Context extractedContext = GlobalOpenTelemetry.getPropagators()
.getTextMapPropagator()
.extract(Context.current(), request, getter);
Span span = tracer.spanBuilder(request.getRequestURI())
.setSpanKind(SpanKind.SERVER)
.setParent(extractedContext)
.startSpan();
try (Scope scope = span.makeCurrent()) {
filterChain.doFilter(request, response);
span.setStatus(StatusCode.OK);
} catch (Exception e) {
span.setStatus(StatusCode.ERROR);
throw e;
} finally {
span.end();
}
}