This is an automated email from the ASF dual-hosted git repository. reta pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/master by this push: new 35eaece CXF-7439: Support OpenTracing Tracer API. Adding Karaf feature and OSGi sample. 35eaece is described below commit 35eaececdf71dc6a2581c0ada943350e9da35e58 Author: reta <drr...@gmail.com> AuthorDate: Tue Sep 26 19:31:21 2017 -0400 CXF-7439: Support OpenTracing Tracer API. Adding Karaf feature and OSGi sample. --- .../samples/jax_rs/tracing_opentracing/README.txt | 2 +- .../jax_rs/tracing_opentracing_osgi/README.txt | 98 +++++++++++++++ .../jax_rs/tracing_opentracing_osgi/pom.xml | 131 ++++++++++++++++++++ .../java/demo/jaxrs/tracing/server/Catalog.java | 135 +++++++++++++++++++++ .../demo/jaxrs/tracing/server/CatalogStore.java | 71 +++++++++++ .../META-INF/services/javax.json.spi.JsonProvider | 1 + .../main/resources/OSGI-INF/blueprint/context.xml | 91 ++++++++++++++ distribution/src/main/release/samples/pom.xml | 1 + .../karaf/features/src/main/resources/features.xml | 6 + parent/pom.xml | 5 + 10 files changed, 540 insertions(+), 1 deletion(-) diff --git a/distribution/src/main/release/samples/jax_rs/tracing_opentracing/README.txt b/distribution/src/main/release/samples/jax_rs/tracing_opentracing/README.txt index e53b657..81aeffd 100644 --- a/distribution/src/main/release/samples/jax_rs/tracing_opentracing/README.txt +++ b/distribution/src/main/release/samples/jax_rs/tracing_opentracing/README.txt @@ -2,7 +2,7 @@ JAX-RS OpenTracing/Jaeger Demo ================= The demo shows a basic usage of OpenTracing API + Jaeger distributed tracer -with REST based Web Services using JAX-RS 2.0 (JSR-339). The REST server provides the +with REST based Web Services using JAX-RS 2.0 (JSR-339). The REST server provides the following services at URL http://localhost:9000/catalog: - GET to http://localhost:9000/catalog diff --git a/distribution/src/main/release/samples/jax_rs/tracing_opentracing_osgi/README.txt b/distribution/src/main/release/samples/jax_rs/tracing_opentracing_osgi/README.txt new file mode 100644 index 0000000..41a3cad --- /dev/null +++ b/distribution/src/main/release/samples/jax_rs/tracing_opentracing_osgi/README.txt @@ -0,0 +1,98 @@ +JAX-RS OpenTracing/Jaeger Demo in OSGi container +================= + +The demo shows a basic usage of OpenTracing API + Jaeger distributed tracer +with REST based Web Services using JAX-RS 2.0 (JSR-339), deployed inside OSGi +container. The server provides the following services at base URL +http://localhost:8181/cxf/catalog: + + GET http://localhost:8181/cxf/catalog + POST http://localhost:8181/cxf/catalog + GET http://localhost:8181/cxf/catalog/<id> + DELETE http://localhost:8181/cxf/catalog/<id> + + +Building and running the demo using Maven +--------------------------------------- + +From the base directory of this sample (i.e., where this README file is +located), the Maven pom.xml file can be used to build and run the demo. + +Using either UNIX or Windows: + + mvn install + +Starting Karaf (refer to http://karaf.apache.org/manual/latest-4.1.x/quick-start.html) + + bin/karaf + + + __ __ ____ + / //_/____ __________ _/ __/ + / ,< / __ `/ ___/ __ `/ /_ + / /| |/ /_/ / / / /_/ / __/ + /_/ |_|\__,_/_/ \__,_/_/ + + Apache Karaf (4.1.2) + + Hit '<tab>' for a list of available commands + and '[cmd] --help' for help on a specific command. + Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown Karaf. + + +In order to install CXF's features, you need to add the CXF's features repo using + + feature:repo-add cxf 3.n.m + +where 3.n.m corresponds to a valid CXF version number (e.g., 3.2.1). + +Install CXF's cxf-tracing-opentracing feature that installs all the required bundles +for this demo bundle. + + feature:install cxf-jaxrs + feature:install cxf-jsr-json + feature:install cxf-tracing-opentracing + +Install the distributed tracer compatible with OpenTracing API, as in this example +we are using Uber Jaeger: + + install -s wrap:mvn:com.squareup.okio/okio/1.13.0 + install -s wrap:mvn:com.squareup.okhttp3/okhttp/3.8.1 + install -s wrap:mvn:org.apache.thrift/libthrift/0.9.2 + install -s wrap:mvn:com.uber.jaeger/jaeger-thrift/0.20.6 + install -s wrap:mvn:com.uber.jaeger/jaeger-core/0.20.6 + +Install this demo bundle (using the appropriate bundle version number) + + install -s mvn:org.apache.cxf.samples/jax_rs_tracing_opentracing_osgi/3.n.m + +You can verify if the CXF JAX-RS OpenTracing Blueprint Demo is installed and started. + + karaf@root()> list + START LEVEL 100 , List Threshold: 50 + ID | State | Lvl | Version | Name + ----+--------+-----+-----------+--------------------------------------------------------------------- + 28 | Active | 80 | 4.1.2 | Apache Karaf :: OSGi Services :: Event + 112 | Active | 80 | 0 | wrap_mvn_com.squareup.okio_okio_1.13.0 + 113 | Active | 80 | 0 | wrap_mvn_com.squareup.okhttp3_okhttp_3.8.1 + 114 | Active | 80 | 0.9.2 | Apache Thrift + 115 | Active | 80 | 0 | wrap_mvn_com.uber.jaeger_jaeger-core_0.20.6 + 116 | Active | 80 | 0 | wrap_mvn_com.uber.jaeger_jaeger-thrift_0.20.6 + 117 | Active | 80 | 3.n.m | JAX-RS Demo Using Distributed Tracing with OpenTracing API and OSGi + + karaf@root()> + +To collect the traces, please run Jaeger distributed tracer components, the +simplest way would be using Docker: + + docker run --rm -it --network=host jaegertracing/all-in-one + +Now, you will be able to access this CXF JAXRS demo service on your Karaf instance at + + http://localhost:8181/cxf/catalog + +The following sample traces should be available in Jaeger UI (available +be default at http://localhost:16686/search): + + +- cxf-server GET /cxf/catalog + +- cxf-server Looking for books \ No newline at end of file diff --git a/distribution/src/main/release/samples/jax_rs/tracing_opentracing_osgi/pom.xml b/distribution/src/main/release/samples/jax_rs/tracing_opentracing_osgi/pom.xml new file mode 100644 index 0000000..42bad42 --- /dev/null +++ b/distribution/src/main/release/samples/jax_rs/tracing_opentracing_osgi/pom.xml @@ -0,0 +1,131 @@ +<?xml version="1.0"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <artifactId>jax_rs_tracing_opentracing_osgi</artifactId> + <name>JAX-RS Demo Using Distributed Tracing with OpenTracing API and OSGi</name> + <description>JAX-RS Demo Using Distributed Tracing with OpenTracing API and OSGi</description> + <packaging>bundle</packaging> + <parent> + <groupId>org.apache.cxf.samples</groupId> + <artifactId>cxf-samples</artifactId> + <version>3.2.1-SNAPSHOT</version> + <relativePath>../..</relativePath> + </parent> + <properties> + <cxf.version>${project.version}</cxf.version> + </properties> + <dependencies> + <dependency> + <groupId>org.apache.cxf</groupId> + <artifactId>cxf-rt-transports-http</artifactId> + <version>3.2.1-SNAPSHOT</version> + </dependency> + <!-- This dependency is needed if you're using the Jetty container --> + <dependency> + <groupId>org.apache.cxf</groupId> + <artifactId>cxf-rt-transports-http-jetty</artifactId> + <version>3.2.1-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.cxf</groupId> + <artifactId>cxf-rt-frontend-jaxrs</artifactId> + <version>3.2.1-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.cxf</groupId> + <artifactId>cxf-rt-rs-client</artifactId> + <version>3.2.1-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.cxf</groupId> + <artifactId>cxf-integration-tracing-opentracing</artifactId> + <version>3.2.1-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.cxf</groupId> + <artifactId>cxf-rt-rs-extension-providers</artifactId> + <version>3.2.1-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>javax.json</groupId> + <artifactId>javax.json-api</artifactId> + </dependency> + <dependency> + <groupId>org.apache.johnzon</groupId> + <artifactId>johnzon-core</artifactId> + </dependency> + <dependency> + <groupId>javax.ws.rs</groupId> + <artifactId>javax.ws.rs-api</artifactId> + </dependency> + <dependency> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-webapp</artifactId> + </dependency> + <dependency> + <groupId>com.uber.jaeger</groupId> + <artifactId>jaeger-core</artifactId> + </dependency> + <dependency> + <groupId>com.uber.jaeger</groupId> + <artifactId>jaeger-thrift</artifactId> + </dependency> + <dependency> + <groupId>com.squareup.okhttp3</groupId> + <artifactId>okhttp</artifactId> + <version>3.8.1</version> + </dependency> + <dependency> + <groupId>com.squareup.okio</groupId> + <artifactId>okio</artifactId> + <version>1.13.0</version> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName> + <Import-Package> + javax.ws.rs, + javax.ws.rs.core, + javax.ws.rs.container, + org.apache.cxf.jaxrs.provider, + org.apache.cxf.tracing.opentracing.jaxrs, + org.osgi.service.blueprint, + javax.annotation;version="[1.2,2)", + org.apache.johnzon.core, + !com.uber.jaeger.Tracer, + * + </Import-Package> + <Export-Package> + </Export-Package> + </instructions> + </configuration> + </plugin> + </plugins> + </build> +</project> diff --git a/distribution/src/main/release/samples/jax_rs/tracing_opentracing_osgi/src/main/java/demo/jaxrs/tracing/server/Catalog.java b/distribution/src/main/release/samples/jax_rs/tracing_opentracing_osgi/src/main/java/demo/jaxrs/tracing/server/Catalog.java new file mode 100644 index 0000000..141effc --- /dev/null +++ b/distribution/src/main/release/samples/jax_rs/tracing_opentracing_osgi/src/main/java/demo/jaxrs/tracing/server/Catalog.java @@ -0,0 +1,135 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package demo.jaxrs.tracing.server; + + +import java.io.IOException; +import java.util.UUID; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +import javax.json.Json; +import javax.json.JsonObject; +import javax.ws.rs.DELETE; +import javax.ws.rs.FormParam; +import javax.ws.rs.GET; +import javax.ws.rs.NotFoundException; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.container.AsyncResponse; +import javax.ws.rs.container.Suspended; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.UriInfo; + +import org.apache.cxf.tracing.Traceable; +import org.apache.cxf.tracing.TracerContext; + +@Path("/catalog") +public class Catalog { + private final ExecutorService executor = Executors.newFixedThreadPool(2); + private final CatalogStore store; + + public Catalog() { + store = new CatalogStore(); + } + + @POST + @Produces(MediaType.APPLICATION_JSON) + public Response addBook(@Context final UriInfo uriInfo, @Context final TracerContext tracing, + @FormParam("title") final String title) { + try { + final String id = UUID.randomUUID().toString(); + + executor.submit( + tracing.wrap("Inserting New Book", + new Traceable<Void>() { + public Void call(final TracerContext context) throws Exception { + store.put(id, title); + return null; + } + } + ) + ).get(10, TimeUnit.SECONDS); + + return Response + .created(uriInfo.getRequestUriBuilder().path(id).build()) + .build(); + } catch (final Exception ex) { + return Response + .serverError() + .entity(Json + .createObjectBuilder() + .add("error", ex.getMessage()) + .build()) + .build(); + } + } + + @GET + @Produces(MediaType.APPLICATION_JSON) + public void getBooks(@Suspended final AsyncResponse response, + @Context final TracerContext tracing) throws Exception { + tracing.continueSpan(new Traceable<Void>() { + @Override + public Void call(final TracerContext context) throws Exception { + executor.submit(tracing.wrap("Looking for books", new Traceable<Void>() { + @Override + public Void call(final TracerContext context) throws Exception { + response.resume(store.scan()); + return null; + } + })); + + return null; + } + }); + } + + @GET + @Path("/{id}") + @Produces(MediaType.APPLICATION_JSON) + public JsonObject getBook(@PathParam("id") final String id) throws IOException { + final JsonObject book = store.get(id); + + if (book == null) { + throw new NotFoundException("Book with does not exists: " + id); + } + + return book; + } + + @DELETE + @Path("/{id}") + @Produces(MediaType.APPLICATION_JSON) + public Response delete(@PathParam("id") final String id) throws IOException { + if (!store.remove(id)) { + throw new NotFoundException("Book with does not exists: " + id); + } + + return Response.ok().build(); + } +} + + diff --git a/distribution/src/main/release/samples/jax_rs/tracing_opentracing_osgi/src/main/java/demo/jaxrs/tracing/server/CatalogStore.java b/distribution/src/main/release/samples/jax_rs/tracing_opentracing_osgi/src/main/java/demo/jaxrs/tracing/server/CatalogStore.java new file mode 100644 index 0000000..d68ba66 --- /dev/null +++ b/distribution/src/main/release/samples/jax_rs/tracing_opentracing_osgi/src/main/java/demo/jaxrs/tracing/server/CatalogStore.java @@ -0,0 +1,71 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package demo.jaxrs.tracing.server; + +import java.io.IOException; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import javax.json.Json; +import javax.json.JsonArray; +import javax.json.JsonArrayBuilder; +import javax.json.JsonObject; + +public class CatalogStore { + private final Map<String, String> books = new ConcurrentHashMap<>(); + + public CatalogStore() { + } + + public boolean remove(final String key) throws IOException { + return books.remove(key) != null; + } + + public JsonObject get(final String key) throws IOException { + final String title = books.get(key); + + if (title != null) { + return Json.createObjectBuilder() + .add("id", key) + .add("title", title) + .build(); + } + + return null; + } + + public void put(final String key, final String title) throws IOException { + books.put(key, title); + } + + public JsonArray scan() throws IOException { + final JsonArrayBuilder builder = Json.createArrayBuilder(); + + for (final Map.Entry<String, String> entry: books.entrySet()) { + builder.add(Json.createObjectBuilder() + .add("id", entry.getKey()) + .add("title", entry.getValue()) + ); + } + + return builder.build(); + } + +} diff --git a/distribution/src/main/release/samples/jax_rs/tracing_opentracing_osgi/src/main/resources/META-INF/services/javax.json.spi.JsonProvider b/distribution/src/main/release/samples/jax_rs/tracing_opentracing_osgi/src/main/resources/META-INF/services/javax.json.spi.JsonProvider new file mode 100644 index 0000000..10c8c57 --- /dev/null +++ b/distribution/src/main/release/samples/jax_rs/tracing_opentracing_osgi/src/main/resources/META-INF/services/javax.json.spi.JsonProvider @@ -0,0 +1 @@ +org.apache.johnzon.core.JsonProviderImpl \ No newline at end of file diff --git a/distribution/src/main/release/samples/jax_rs/tracing_opentracing_osgi/src/main/resources/OSGI-INF/blueprint/context.xml b/distribution/src/main/release/samples/jax_rs/tracing_opentracing_osgi/src/main/resources/OSGI-INF/blueprint/context.xml new file mode 100644 index 0000000..264d86c --- /dev/null +++ b/distribution/src/main/release/samples/jax_rs/tracing_opentracing_osgi/src/main/resources/OSGI-INF/blueprint/context.xml @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<!-- START SNIPPET: blueprint --> +<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:cxf="http://cxf.apache.org/blueprint/core" + xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs" + + xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd + http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd + http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/blueprint/jaxrs.xsd"> + + <!-- JAXRS providers --> + <bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.jsrjsonp.JsrJsonpProvider" /> + + <bean id="tracingFeature" class="org.apache.cxf.tracing.opentracing.jaxrs.OpenTracingFeature"> + <argument index="0"> + <bean factory-ref="builder" factory-method="build" /> + </argument> + </bean> + + <bean id="metrics" class="com.uber.jaeger.metrics.Metrics"> + <argument index="0"> + <bean class="com.uber.jaeger.metrics.StatsFactoryImpl"> + <argument index="0"> + <bean class="com.uber.jaeger.metrics.NullStatsReporter" /> + </argument> + </bean> + </argument> + </bean> + + <bean id="builder" class="com.uber.jaeger.Tracer.Builder"> + <argument index="0" value="cxf-server" /> + <argument index="1"> + <bean class="com.uber.jaeger.reporters.RemoteReporter"> + <argument index="0" ref="sender" /> + <argument index="1" value="1000"/> + <argument index="2" value="100"/> + <argument index="3" ref="metrics"/> + </bean> + </argument> + <argument index="2"> + <bean class="com.uber.jaeger.samplers.ConstSampler"> + <argument index="0" value="true" /> + </bean> + </argument> + </bean> + + <bean id="sender" class="com.uber.jaeger.senders.HttpSender"> + <argument index="0" value="http://localhost:14268/api/traces" type="java.lang.String" /> + </bean> + + <!-- Application resources --> + <bean id="catalogResource" class="demo.jaxrs.tracing.server.Catalog" /> + + <!-- CXF BraveFeature --> + <cxf:bus> + <cxf:features> + <cxf:logging /> + </cxf:features> + </cxf:bus> + + <jaxrs:server id="catalogServer" address="/"> + <jaxrs:serviceBeans> + <ref component-id="catalogResource" /> + </jaxrs:serviceBeans> + <jaxrs:providers> + <ref component-id="jsonProvider" /> + <ref component-id="tracingFeature" /> + </jaxrs:providers> + </jaxrs:server> + +</blueprint> +<!-- END SNIPPET: blueprint --> diff --git a/distribution/src/main/release/samples/pom.xml b/distribution/src/main/release/samples/pom.xml index b68ec54..42c4197 100644 --- a/distribution/src/main/release/samples/pom.xml +++ b/distribution/src/main/release/samples/pom.xml @@ -132,6 +132,7 @@ <module>jaxws_tracing_brave_osgi</module> <module>jax_rs/tracing_opentracing</module> <module>jax_rs/tracing_opentracing_camel</module> + <module>jax_rs/tracing_opentracing_osgi</module> </modules> <dependencyManagement> <dependencies> diff --git a/osgi/karaf/features/src/main/resources/features.xml b/osgi/karaf/features/src/main/resources/features.xml index 8391f17..c9f84c7 100644 --- a/osgi/karaf/features/src/main/resources/features.xml +++ b/osgi/karaf/features/src/main/resources/features.xml @@ -299,6 +299,12 @@ <bundle start-level="35">mvn:io.zipkin.brave/brave-instrumentation-http/${cxf.brave.version}</bundle> <bundle start-level="40">mvn:org.apache.cxf/cxf-integration-tracing-brave/${project.version}</bundle> </feature> + <feature name="cxf-tracing-opentracing" version="${project.version}"> + <feature version="${project.version}">cxf-core</feature> + <bundle start-level="35">wrap:mvn:io.opentracing/opentracing-api/${cxf.opentracing.version}</bundle> + <bundle start-level="35">wrap:mvn:io.opentracing/opentracing-util/${cxf.opentracing.version}</bundle> + <bundle start-level="40">mvn:org.apache.cxf/cxf-integration-tracing-opentracing/${project.version}</bundle> + </feature> <feature name="cxf-rs-description-swagger2" version="${project.version}"> <feature version="${project.version}">cxf-jaxrs</feature> <feature version="${project.version}">cxf-jackson</feature> diff --git a/parent/pom.xml b/parent/pom.xml index 456ecbf..c8b5f92 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -2019,6 +2019,11 @@ <version>${cxf.jaeger.version}</version> </dependency> <dependency> + <groupId>com.uber.jaeger</groupId> + <artifactId>jaeger-thrift</artifactId> + <version>${cxf.jaeger.version}</version> + </dependency> + <dependency> <groupId>org.qi4j.library</groupId> <artifactId>org.qi4j.library.circuitbreaker</artifactId> <version>${cxf.zest.version}</version> -- To stop receiving notification emails like this one, please contact ['"commits@cxf.apache.org" <commits@cxf.apache.org>'].