blob: 07aa74d2ba263db07c087742057ac50a16d8f020 [file] [log] [blame] [view] [edit]
# OpenCensus JAX-RS
[![Build Status][travis-image]][travis-url]
[![Windows Build Status][appveyor-image]][appveyor-url]
[![Maven Central][maven-image]][maven-url]
The *OpenCensus JAX-RS for Java* is a container and client filter for trace instrumentation when using JAX-RS for REST implementation in Java.
## Quickstart
### Add the dependencies to your project
For Maven add to your `pom.xml`:
```xml
<dependencies>
<dependency>
<groupId>io.opencensus</groupId>
<artifactId>opencensus-api</artifactId>
<version>0.28.3</version>
</dependency>
<dependency>
<groupId>io.opencensus</groupId>
<artifactId>opencensus-contrib-http-jaxrs</artifactId>
<version>0.28.3</version>
</dependency>
</dependencies>
```
For Gradle add to your dependencies:
```groovy
compile 'io.opencensus:opencensus-api:0.28.3'
compile 'io.opencensus:opencensus-contrib-http-jaxrs:0.28.3'
```
### Usage
#### Container Filter
The container filter should be added to the JAX-RS `Application` class and endpoints should be annotated
with `@Metrics` annotation.
```java
class MyApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> providers = new HashSet<>(super.getClasses());
providers.add(JaxrsContainerFilter.class);
return providers;
}
}
```
It is possible to customize the filter by using the custom constructor. The below will
use the `B3Format` for context propagation instead of the W3C text context format.
```java
class MyApplication extends Application {
@Override
public Set<Object> getSingletons() {
Set<Object> singletons = new HashSet<>(super.getSingletons());
singletons.add(new JaxrsContainerFilter(
new JaxrsContainerExtractor(),
Tracing.getPropagationComponent().getB3Format(),
/* publicEndpoint= */ true));
return singletons;
}
}
```
```java
@Metrics
@Path("/resource")
class MyResource {
@GET
public Response resource() {
...
}
}
```
The annotation may also be applied on method level.
#### Client Filter
Filter should be added to the `WebTarget` instance when using JAX-RS as client.
```java
WebTarget target = ClientBuilder.newClient().target("endpoint");
target.register(JaxrsClientFilter.class);
```
It is possible to customize the filter using the custom constructor. The
below will use the `B3Format` for context propagation instead of the default W3C
text context format.
```java
WebTarget target = ClientBuilder.newClient().target("endpoint");
target.register(new JaxrsClientFilter(
new JaxrsContainerExtractor(),
Tracing.getPropagationComponent().getB3Format()));
```
[travis-image]: https://travis-ci.org/census-instrumentation/opencensus-java.svg?branch=master
[travis-url]: https://travis-ci.org/census-instrumentation/opencensus-java
[appveyor-image]: https://ci.appveyor.com/api/projects/status/hxthmpkxar4jq4be/branch/master?svg=true
[appveyor-url]: https://ci.appveyor.com/project/opencensusjavateam/opencensus-java/branch/master
[maven-image]: https://maven-badges.herokuapp.com/maven-central/io.opencensus/opencensus-contrib-http-jetty-client/badge.svg
[maven-url]: https://maven-badges.herokuapp.com/maven-central/io.opencensus/opencensus-contrib-jetty-client