...
It is also worth to mention the way Apache CXF attaches the description to spans. With regards to the client integration, the description becomes a full URL being invoked prefixed by HTTP method, for example: GET http://localhost:8282/books. On the server side integration, the description becomes a relative JAX-RS resource path prefixed by HTTP method, f.e.: GET books, POST book/123
Configuring Client
...
There are a couple of ways the JAX-RS client could be configured, depending on the client implementation. Apache CXF provides its own WebClient which could be configured just like that (in future versions, there would be a simpler ways to do that using client specific features):
Code Block | ||
---|---|---|
| ||
final SdkTracerProvider sdkTracerProvider = SdkTracerProvider
.builder()
...
.build();
final OpenTelemetrySdk openTelemetrySdk = OpenTelemetrySdk
.builder()
.setTracerProvider(sdkTracerProvider)
...
.buildAndRegisterGlobal();
final Tracer tracer = openTelemetrySdk.getTracer("web-client");
Response response = WebClient
.create("http://localhost:9000/catalog", Arrays.asList(new OpenTelemetryClientProvider(openTelemetry, tracer))
.accept(MediaType.APPLICATION_JSON)
.get(); |
The configuration based on using the standard JAX-RS Client is very similar:
Code Block | ||||
---|---|---|---|---|
| ||||
final SdkTracerProvider sdkTracerProvider = SdkTracerProvider
.builder()
...
.build();
final OpenTelemetrySdk openTelemetrySdk = OpenTelemetrySdk
.builder()
.setTracerProvider(sdkTracerProvider)
...
.buildAndRegisterGlobal();
final Tracer tracer = openTelemetrySdk.getTracer("jaxrs-client");
final OpenTelemetryClientProvider provider = new OpenTelemetryClientProvider(openTelemetrySdk, tracer);
final Client client = ClientBuilder.newClient().register(provider);
final Response response = client
.target("http://localhost:9000/catalog")
.request()
.accept(MediaType.APPLICATION_JSON)
.get(); |
Configuring Server
TBD
Distributed Tracing In Action: Usage Scenarios
...