DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
...
OpenZipkin Brave is a distributed tracing implementation compatible with Twitter Zipkin backend services, written in Java. For quite a while OpenZipkin Brave offers a dedicated module to integrate with Apache CXF framework, namely brave-cxf3. However, lately the discussion had been initiated to make this integration a part of Apache CXF codebase so the CXF team is going to be responsible for maintaining it. As such, it is going to be available in upcoming 3.2.0 release /3.1.12 releases under cxf-integration-tracing-brave module, with both client side and server side supported. This section gives a complete overview on how distributed tracing using OpenZipkin Brave could be integrated into JAX-RS / JAX-WS applications built on top of Apache CXF.
...
The current integration of distributed tracing in Apache CXF supports OpenZipkin Brave (4.3.16x+ release branch) in JAX-RS 2.x+ and JAX-WS applications, including the applications deploying in OSGi containers. From high-level perspective, JAX-RS 2.x+ integration consists of three main parts:
...
| Code Block | ||||
|---|---|---|---|---|
| ||||
// Configure the spans transport sender
final Sender sender = ...;
/**
* For example:
*
* final Sender sender = LibthriftSender.create("localhost");;
*/
final BraveTracing brave = new Brave.BuilderTracing
.newBuilder()
.localServiceName("web-client")
.reporter(AsyncReporter.builder(sender).build())
.traceSampler(Sampler.ALWAYS_SAMPLE) /* or any other Sampler */
.build();
Response response = WebClient
.create("http://localhost:9000/catalog", Arrays.asList(new BraveClientProvider(brave)))
.accept(MediaType.APPLICATION_JSON)
.get();
|
...
| Code Block | ||||
|---|---|---|---|---|
| ||||
// Configure the spans transport sender
final Sender sender = ...;
/**
* For example:
*
* final Sender sender = LibthriftSender.create("localhost");;
*/
final BraveTracing brave = new Brave.Builder Tracing
.newBuilder()
.localServiceName("jaxrs-client")
.reporter(AsyncReporter.builder(sender).build())
.traceSampler(Sampler.ALWAYS_SAMPLE) /* or any other Sampler */
.build();
final BraveClientProvider provider = new BraveClientProvider(brave);
final Client client = ClientBuilder.newClient().register(provider);
final Response response = client
.target("http://localhost:9000/catalog")
.request()
.accept(MediaType.APPLICATION_JSON)
.get(); |
...
| Code Block | ||||
|---|---|---|---|---|
| ||||
@ApplicationPath("/")
public class CatalogApplication extends Application {
@Override
public Set<Object> getSingletons() {
// Configure the spans transport sender
final Sender sender = ...;
/**
* For example:
*
* final Sender sender = LibthriftSender.create("localhost");;
*/
final BraveTracing brave = new Brave.BuilderTracing
.newBuilder()
.localServiceName("tracer")
.reporter(AsyncReporter.builder(sender).build())
.traceSampler(Sampler.ALWAYS_SAMPLE) /* or any other Sampler */
.build();
return new HashSet<>(
Arrays.asList(
new BraveFeature(brave)
)
);
}
} |
...
| Code Block | ||||
|---|---|---|---|---|
| ||||
// Configure the spans transport sender
final Sender sender = ...;
/**
* For example:
*
* final Sender sender = LibthriftSender.create("localhost");;
*/
final BraveTracing brave = new Brave.Builder Tracing
.newBuilder()
.localServiceName("tracer")
.reporter(AsyncReporter.builder(sender).build())
.traceSampler(Sampler.ALWAYS_SAMPLE) /* or any other Sampler */
.build();
final JAXRSServerFactoryBean factory = RuntimeDelegate.getInstance().createEndpoint(/* application instance */, JAXRSServerFactoryBean.class);
factory.setProvider(new BraveFeature(brave));
...
return factory.create();
|
...
| Code Block | ||||
|---|---|---|---|---|
| ||||
// Configure the spans transport sender
final Sender sender = ...;
/**
* For example:
*
* final Sender sender = LibthriftSender.create("localhost");;
*/
final BraveTracing brave = new Brave.BuilderTracing
.newBuilder()
.localServiceName("tracer")
.reporter(AsyncReporter.builder(sender).build())
.traceSampler(Sampler.ALWAYS_SAMPLE) /* or any other Sampler */
.build();
final JaxWsServerFactoryBean sf = new JaxWsServerFactoryBean();
...
sf.getFeatures().add(new BraveFeature(brave));
...
sf.create();
|
...
| Code Block |
|---|
JAXRSClientFactoryBean clientFactory = new JAXRSClientFactoryBean();
clientFactory.setAddress("http://localhost:9001/");
clientFactory.setServiceClass(FooService.class);
clientFactory.getFeatures().add(new BraveClientFeature(brave));
FooService client = (FooService) clientFactory.create(); |
final Tracing brave = Tracing
.newBuilder()
.localServiceName(