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 viaHttpServerParser.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
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods 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 Detail
-
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
public Span handleReceive(HttpServerRequest request)
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 public Span handleReceive(TraceContext.Extractor<Req> extractor, Req request)
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
public void handleSend(@Nullable Resp response, @Nullable Throwable error, Span span)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)
-
-