cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From r...@apache.org
Subject [cxf] branch master updated: CXF-7439: Support OpenTracing Tracer API. Adding Karaf feature and OSGi sample.
Date Tue, 26 Sep 2017 23:31:35 GMT
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 <drreta@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>'].

Mime
View raw message