Package brave.http
Class HttpServerHandler<Req,Resp>
java.lang.Object
brave.http.HttpServerHandler<Req,Resp>
- Type Parameters:
Req- the native http request type of the server.Resp- the native http response type of the server.
public final class HttpServerHandler<Req,Resp> extends Object
This standardizes a way to instrument http servers, particularly in a way that encourages use of
portable customizations via
HttpServerParser.
This is an example of synchronous instrumentation:
Span span = handler.handleReceive(request);
Throwable error = null;
try (Tracer.SpanInScope ws = tracer.withSpanInScope(span)) {
// any downstream code can see Tracer.currentSpan() or use Tracer.currentSpanCustomizer()
response = invoke(request);
} catch (RuntimeException | Error e) {
error = e;
throw e;
} finally {
handler.handleSend(response, error, span);
}
- Since:
- 4.3
-
Method Summary
Modifier and Type Method Description static HttpServerHandler<HttpServerRequest,HttpServerResponse>create(HttpTracing httpTracing)static <Req, Resp> HttpServerHandler<Req,Resp>create(HttpTracing httpTracing, HttpServerAdapter<Req,Resp> adapter)Deprecated.Since 5.7, usecreate(HttpTracing)as it is more portable.SpanhandleReceive(HttpServerRequest request)Conditionally joins a span, or starts a new trace, depending on if a trace context was extracted from the request.<C> SpanhandleReceive(TraceContext.Extractor<C> extractor, C carrier, Req request)Deprecated.Since 5.7, usehandleReceive(HttpServerRequest)SpanhandleReceive(TraceContext.Extractor<Req> extractor, Req request)Deprecated.Since 5.7, usehandleReceive(HttpServerRequest)voidhandleSend(Resp response, Throwable error, Span span)Finishes the server span after assigning it tags according to the response or error.
-
Method Details
-
create
public static HttpServerHandler<HttpServerRequest,HttpServerResponse> create(HttpTracing httpTracing)- Since:
- 5.7
-
create
@Deprecated public static <Req, Resp> HttpServerHandler<Req,Resp> create(HttpTracing httpTracing, HttpServerAdapter<Req,Resp> adapter)Deprecated.Since 5.7, usecreate(HttpTracing)as it is more portable.- Since:
- 4.3
-
handleReceive
Conditionally joins a span, or starts a new trace, depending on if a trace context was extracted from the request. Tags are added before the span is started.This is typically called before the request is processed by the actual library.
- Since:
- 5.7
-
handleReceive
Deprecated.Since 5.7, usehandleReceive(HttpServerRequest)- Since:
- 4.3
-
handleReceive
@Deprecated public <C> Span handleReceive(TraceContext.Extractor<C> extractor, C carrier, Req request)Deprecated.Since 5.7, usehandleReceive(HttpServerRequest)- Since:
- 4.3
-
handleSend
Finishes the server span after assigning it tags according to the response or error.This is typically called once the response headers are sent, and after the span is
no longer in scope.- Since:
- 4.3
- See Also:
HttpServerParser.response(HttpAdapter, Object, Throwable, SpanCustomizer)
-