This is an automated email from the ASF dual-hosted git repository.

reta pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/main by this push:
     new 22d97aa326 CXF-8457: Provide OpenTelemetry support (minor API 
usability improvements)
22d97aa326 is described below

commit 22d97aa326eefc6c4758c24179cf564d9b4bc47f
Author: Andriy Redko <drr...@gmail.com>
AuthorDate: Mon Aug 21 12:16:28 2023 -0400

    CXF-8457: Provide OpenTelemetry support (minor API usability improvements)
---
 .../java/demo/jaxrs/tracing/OpenTelemetrySetup.java    |  4 ++--
 .../main/java/demo/jaxrs/tracing/client/Client.java    |  4 ++--
 .../AbstractOpenTelemetryClientInterceptor.java        |  9 ++++++++-
 .../AbstractOpenTelemetryClientProvider.java           |  8 ++++++--
 .../AbstractOpenTelemetryInterceptor.java              | 11 +++++++++--
 .../opentelemetry/AbstractOpenTelemetryProvider.java   |  6 +++++-
 .../opentelemetry/OpenTelemetryClientFeature.java      | 17 ++++++++++++++---
 .../OpenTelemetryClientStartInterceptor.java           | 10 ++++++++++
 .../OpenTelemetryClientStopInterceptor.java            | 14 ++++++++++++--
 .../tracing/opentelemetry/OpenTelemetryFeature.java    | 14 ++++++++++++--
 .../opentelemetry/OpenTelemetryStartInterceptor.java   |  8 ++++++--
 .../opentelemetry/OpenTelemetryStopInterceptor.java    |  5 +++++
 .../jaxrs/OpenTelemetryClientProvider.java             |  5 +++++
 .../opentelemetry/jaxrs/OpenTelemetryFeature.java      | 18 ++++++++++++------
 .../opentelemetry/jaxrs/OpenTelemetryProvider.java     |  5 +++++
 15 files changed, 113 insertions(+), 25 deletions(-)

diff --git 
a/distribution/src/main/release/samples/jax_rs/tracing_opentelemetry/src/main/java/demo/jaxrs/tracing/OpenTelemetrySetup.java
 
b/distribution/src/main/release/samples/jax_rs/tracing_opentelemetry/src/main/java/demo/jaxrs/tracing/OpenTelemetrySetup.java
index dd5a04c851..e60290ec7d 100644
--- 
a/distribution/src/main/release/samples/jax_rs/tracing_opentelemetry/src/main/java/demo/jaxrs/tracing/OpenTelemetrySetup.java
+++ 
b/distribution/src/main/release/samples/jax_rs/tracing_opentelemetry/src/main/java/demo/jaxrs/tracing/OpenTelemetrySetup.java
@@ -36,11 +36,11 @@ public class OpenTelemetrySetup {
         Resource resource = Resource.getDefault()
             
.merge(Resource.create(Attributes.of(ResourceAttributes.SERVICE_NAME, 
serviceName)));
 
-        SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
+        final SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
             
.addSpanProcessor(BatchSpanProcessor.builder(LoggingSpanExporter.create()).build())
             .setResource(resource).build();
 
-        OpenTelemetrySdk openTelemetrySdk = 
OpenTelemetrySdk.builder().setTracerProvider(sdkTracerProvider)
+        final OpenTelemetrySdk openTelemetrySdk = 
OpenTelemetrySdk.builder().setTracerProvider(sdkTracerProvider)
             
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
             .buildAndRegisterGlobal();
 
diff --git 
a/distribution/src/main/release/samples/jax_rs/tracing_opentelemetry/src/main/java/demo/jaxrs/tracing/client/Client.java
 
b/distribution/src/main/release/samples/jax_rs/tracing_opentelemetry/src/main/java/demo/jaxrs/tracing/client/Client.java
index 69cce61941..faa0d05ca1 100644
--- 
a/distribution/src/main/release/samples/jax_rs/tracing_opentelemetry/src/main/java/demo/jaxrs/tracing/client/Client.java
+++ 
b/distribution/src/main/release/samples/jax_rs/tracing_opentelemetry/src/main/java/demo/jaxrs/tracing/client/Client.java
@@ -25,7 +25,7 @@ import demo.jaxrs.tracing.OpenTelemetrySetup;
 import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response;
 import org.apache.cxf.jaxrs.client.WebClient;
-import org.apache.cxf.tracing.opentelemetry.OpenTelemetryFeature;
+import org.apache.cxf.tracing.opentelemetry.jaxrs.OpenTelemetryFeature;
 import org.apache.cxf.tracing.opentelemetry.jaxrs.OpenTelemetryClientProvider;
 
 import io.opentelemetry.sdk.OpenTelemetrySdk;
@@ -37,7 +37,7 @@ public final class Client {
     public static void main(final String[] args) throws Exception {
         try (OpenTelemetrySdk openTelemetry = 
OpenTelemetrySetup.setup(Client.class.getName())) {
             final OpenTelemetryClientProvider provider = new 
OpenTelemetryClientProvider(openTelemetry,
-                                                                               
          OpenTelemetryFeature.DEFAULT_INSTRUMENTATION_NAME);
+                
openTelemetry.getTracer(OpenTelemetryFeature.DEFAULT_INSTRUMENTATION_NAME));
 
             final Response response = WebClient
                 .create("http://localhost:9000/catalog";, 
Arrays.asList(provider))
diff --git 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/AbstractOpenTelemetryClientInterceptor.java
 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/AbstractOpenTelemetryClientInterceptor.java
index 004b9e5256..28eb3431f4 100644
--- 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/AbstractOpenTelemetryClientInterceptor.java
+++ 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/AbstractOpenTelemetryClientInterceptor.java
@@ -26,6 +26,7 @@ import org.apache.cxf.message.Message;
 import org.apache.cxf.phase.PhaseInterceptor;
 
 import io.opentelemetry.api.OpenTelemetry;
+import io.opentelemetry.api.trace.Tracer;
 
 public abstract class AbstractOpenTelemetryClientInterceptor extends 
AbstractOpenTelemetryClientProvider
     implements PhaseInterceptor<Message> {
@@ -33,11 +34,17 @@ public abstract class 
AbstractOpenTelemetryClientInterceptor extends AbstractOpe
     private String phase;
 
     protected AbstractOpenTelemetryClientInterceptor(final String phase, final 
OpenTelemetry openTelemetry,
-                                                     final String 
instrumentationName) {
+            final String instrumentationName) {
         super(openTelemetry, instrumentationName);
         this.phase = phase;
     }
 
+    protected AbstractOpenTelemetryClientInterceptor(final String phase, final 
OpenTelemetry openTelemetry,
+            final Tracer tracer) {
+        super(openTelemetry, tracer);
+        this.phase = phase;
+    }
+
     public Collection<PhaseInterceptor<? extends Message>> 
getAdditionalInterceptors() {
         return null;
     }
diff --git 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/AbstractOpenTelemetryClientProvider.java
 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/AbstractOpenTelemetryClientProvider.java
index 2287952f9f..35727007cd 100644
--- 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/AbstractOpenTelemetryClientProvider.java
+++ 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/AbstractOpenTelemetryClientProvider.java
@@ -45,9 +45,13 @@ public abstract class AbstractOpenTelemetryClientProvider 
extends AbstractTracin
     private final Tracer tracer;
     private final OpenTelemetry openTelemetry;
 
-    public AbstractOpenTelemetryClientProvider(final OpenTelemetry 
openTelemetry, final String instrumentationName) {
+    protected AbstractOpenTelemetryClientProvider(final OpenTelemetry 
openTelemetry, final String instrumentationName) {
+        this(openTelemetry, openTelemetry.getTracer(instrumentationName));
+    }
+
+    protected AbstractOpenTelemetryClientProvider(final OpenTelemetry 
openTelemetry, Tracer tracer) {
         this.openTelemetry = openTelemetry;
-        this.tracer = openTelemetry.getTracer(instrumentationName);
+        this.tracer = tracer;
     }
 
     protected TraceScopeHolder<TraceScope> startTraceSpan(final Map<String, 
List<String>> requestHeaders,
diff --git 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/AbstractOpenTelemetryInterceptor.java
 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/AbstractOpenTelemetryInterceptor.java
index 7ec051fabd..511a04cc41 100644
--- 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/AbstractOpenTelemetryInterceptor.java
+++ 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/AbstractOpenTelemetryInterceptor.java
@@ -26,18 +26,25 @@ import org.apache.cxf.message.Message;
 import org.apache.cxf.phase.PhaseInterceptor;
 
 import io.opentelemetry.api.OpenTelemetry;
+import io.opentelemetry.api.trace.Tracer;
 
 public abstract class AbstractOpenTelemetryInterceptor extends 
AbstractOpenTelemetryProvider
     implements PhaseInterceptor<Message> {
 
     private final String phase;
 
-    protected AbstractOpenTelemetryInterceptor(String phase, OpenTelemetry 
openTelemetry,
-                                               String instrumentationName) {
+    protected AbstractOpenTelemetryInterceptor(final String phase, final 
OpenTelemetry openTelemetry,
+            final String instrumentationName) {
         super(openTelemetry, instrumentationName);
         this.phase = phase;
     }
 
+    protected AbstractOpenTelemetryInterceptor(final String phase, final 
OpenTelemetry openTelemetry,
+            final Tracer tracer) {
+        super(openTelemetry, tracer);
+        this.phase = phase;
+    }
+
     @Override
     public Set<String> getAfter() {
         return Collections.emptySet();
diff --git 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/AbstractOpenTelemetryProvider.java
 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/AbstractOpenTelemetryProvider.java
index 193327fc95..fc4bb2ff5b 100644
--- 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/AbstractOpenTelemetryProvider.java
+++ 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/AbstractOpenTelemetryProvider.java
@@ -46,8 +46,12 @@ public abstract class AbstractOpenTelemetryProvider extends 
AbstractTracingProvi
     protected final Tracer tracer;
 
     protected AbstractOpenTelemetryProvider(final OpenTelemetry openTelemetry, 
final String instrumentationName) {
+        this(openTelemetry, openTelemetry.getTracer(instrumentationName));
+    }
+
+    protected AbstractOpenTelemetryProvider(final OpenTelemetry openTelemetry, 
final Tracer tracer) {
         this.openTelemetry = openTelemetry;
-        this.tracer = openTelemetry.getTracer(instrumentationName);
+        this.tracer =tracer;
     }
 
     protected TraceScopeHolder<TraceScope> startTraceSpan(final Map<String, 
List<String>> requestHeaders,
diff --git 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryClientFeature.java
 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryClientFeature.java
index dd6b2f5c2d..de34d485f8 100644
--- 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryClientFeature.java
+++ 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryClientFeature.java
@@ -28,6 +28,7 @@ import org.apache.cxf.feature.DelegatingFeature;
 import org.apache.cxf.interceptor.InterceptorProvider;
 
 import io.opentelemetry.api.OpenTelemetry;
+import io.opentelemetry.api.trace.Tracer;
 
 @NoJSR250Annotations
 @Provider(value = Type.Feature, scope = Scope.Client)
@@ -40,11 +41,16 @@ public class OpenTelemetryClientFeature extends 
DelegatingFeature<OpenTelemetryC
         super(new Portable(openTelemetry, instrumentationName));
     }
 
+    public OpenTelemetryClientFeature(OpenTelemetry openTelemetry, Tracer 
tracer) {
+        super(new Portable(openTelemetry, tracer));
+    }
+
     public static class Portable implements AbstractPortableFeature {
-        private OpenTelemetryClientStartInterceptor out;
-        private OpenTelemetryClientStopInterceptor in;
+        private final OpenTelemetryClientStartInterceptor out;
+        private final OpenTelemetryClientStopInterceptor in;
+
         public Portable(OpenTelemetry openTelemetry) {
-         this(openTelemetry, 
OpenTelemetryFeature.DEFAULT_INSTRUMENTATION_NAME);
+            this(openTelemetry, 
OpenTelemetryFeature.DEFAULT_INSTRUMENTATION_NAME);
         }
 
         public Portable(OpenTelemetry openTelemetry, String 
instrumentationName) {
@@ -52,6 +58,11 @@ public class OpenTelemetryClientFeature extends 
DelegatingFeature<OpenTelemetryC
             in = new OpenTelemetryClientStopInterceptor(openTelemetry, 
instrumentationName);
         }
 
+        public Portable(OpenTelemetry openTelemetry, Tracer tracer) {
+            out = new OpenTelemetryClientStartInterceptor(openTelemetry, 
tracer);
+            in = new OpenTelemetryClientStopInterceptor(openTelemetry, tracer);
+        }
+
         @Override
         public void doInitializeProvider(InterceptorProvider provider, Bus 
bus) {
             provider.getInInterceptors().add(in);
diff --git 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryClientStartInterceptor.java
 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryClientStartInterceptor.java
index d2396cdf0f..e4adf2aa6e 100644
--- 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryClientStartInterceptor.java
+++ 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryClientStartInterceptor.java
@@ -27,17 +27,27 @@ import org.apache.cxf.message.Message;
 import org.apache.cxf.phase.Phase;
 
 import io.opentelemetry.api.OpenTelemetry;
+import io.opentelemetry.api.trace.Tracer;
 
 public class OpenTelemetryClientStartInterceptor extends 
AbstractOpenTelemetryClientInterceptor {
     public OpenTelemetryClientStartInterceptor(final OpenTelemetry 
openTelemetry, final String instrumentationName) {
         this(Phase.PRE_STREAM, openTelemetry, instrumentationName);
     }
 
+    public OpenTelemetryClientStartInterceptor(final OpenTelemetry 
openTelemetry, final Tracer tracer) {
+        this(Phase.PRE_STREAM, openTelemetry, tracer);
+    }
+
     public OpenTelemetryClientStartInterceptor(final String phase, final 
OpenTelemetry openTelemetry, 
             final String instrumentationName) {
         super(phase, openTelemetry, instrumentationName);
     }
 
+    public OpenTelemetryClientStartInterceptor(final String phase, final 
OpenTelemetry openTelemetry, 
+            final Tracer tracer) {
+        super(phase, openTelemetry, tracer);
+    }
+
     @Override
     public void handleMessage(Message message) throws Fault {
         final Map<String, List<String>> headers = CastUtils
diff --git 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryClientStopInterceptor.java
 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryClientStopInterceptor.java
index ce23c8944b..6bb59bff4c 100644
--- 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryClientStopInterceptor.java
+++ 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryClientStopInterceptor.java
@@ -23,18 +23,28 @@ import org.apache.cxf.message.Message;
 import org.apache.cxf.phase.Phase;
 
 import io.opentelemetry.api.OpenTelemetry;
+import io.opentelemetry.api.trace.Tracer;
 
 public class OpenTelemetryClientStopInterceptor extends 
AbstractOpenTelemetryClientInterceptor {
     public OpenTelemetryClientStopInterceptor(final OpenTelemetry 
openTelemetry,
-                                              final String 
instrumentationName) {
+            final String instrumentationName) {
         this(Phase.RECEIVE, openTelemetry, instrumentationName);
     }
 
+    public OpenTelemetryClientStopInterceptor(final OpenTelemetry 
openTelemetry, final Tracer tracer) {
+        this(Phase.RECEIVE, openTelemetry, tracer);
+    }
+
     public OpenTelemetryClientStopInterceptor(final String phase, final 
OpenTelemetry openTelemetry,
-                                              final String 
instrumentationName) {
+            final String instrumentationName) {
         super(phase, openTelemetry, instrumentationName);
     }
 
+    public OpenTelemetryClientStopInterceptor(final String phase, final 
OpenTelemetry openTelemetry,
+            final Tracer tracer) {
+        super(phase, openTelemetry, tracer);
+    }
+
     @Override
     public void handleMessage(Message message) throws Fault {
         @SuppressWarnings("unchecked")
diff --git 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryFeature.java
 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryFeature.java
index ac273ad635..2d55874e70 100644
--- 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryFeature.java
+++ 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryFeature.java
@@ -29,6 +29,7 @@ import org.apache.cxf.interceptor.InterceptorProvider;
 
 import io.opentelemetry.api.GlobalOpenTelemetry;
 import io.opentelemetry.api.OpenTelemetry;
+import io.opentelemetry.api.trace.Tracer;
 
 @NoJSR250Annotations
 @Provider(value = Type.Feature, scope = Scope.Server)
@@ -49,9 +50,13 @@ public class OpenTelemetryFeature extends 
DelegatingFeature<OpenTelemetryFeature
         super(new Portable(openTelemetry, instrumentationName));
     }
 
+    public OpenTelemetryFeature(final OpenTelemetry openTelemetry, final 
Tracer tracer) {
+        super(new Portable(openTelemetry, tracer));
+    }
+
     public static class Portable implements AbstractPortableFeature {
-        private OpenTelemetryStartInterceptor in;
-        private OpenTelemetryStopInterceptor out;
+        private final OpenTelemetryStartInterceptor in;
+        private final OpenTelemetryStopInterceptor out;
 
         public Portable() {
             this(GlobalOpenTelemetry.get());
@@ -70,6 +75,11 @@ public class OpenTelemetryFeature extends 
DelegatingFeature<OpenTelemetryFeature
             out = new OpenTelemetryStopInterceptor(openTelemetry, 
instrumentationName);
         }
 
+        public Portable(final OpenTelemetry openTelemetry, final Tracer 
tracer) {
+            in = new OpenTelemetryStartInterceptor(openTelemetry, tracer);
+            out = new OpenTelemetryStopInterceptor(openTelemetry, tracer);
+        }
+
         @Override
         public void doInitializeProvider(InterceptorProvider provider, Bus 
bus) {
             provider.getInInterceptors().add(in);
diff --git 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryStartInterceptor.java
 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryStartInterceptor.java
index 23b6309afb..24f2a63fc7 100644
--- 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryStartInterceptor.java
+++ 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryStartInterceptor.java
@@ -28,6 +28,7 @@ import org.apache.cxf.message.Message;
 import org.apache.cxf.phase.Phase;
 
 import io.opentelemetry.api.OpenTelemetry;
+import io.opentelemetry.api.trace.Tracer;
 
 @NoJSR250Annotations
 public class OpenTelemetryStartInterceptor extends 
AbstractOpenTelemetryInterceptor {
@@ -35,14 +36,17 @@ public class OpenTelemetryStartInterceptor extends 
AbstractOpenTelemetryIntercep
         super(Phase.PRE_INVOKE, openTelemetry, instrumentationName);
     }
 
+    public OpenTelemetryStartInterceptor(OpenTelemetry openTelemetry, Tracer 
tracer) {
+        super(Phase.PRE_INVOKE, openTelemetry, tracer);
+    }
+
     @Override
     public void handleMessage(Message message) throws Fault {
         final Map<String, List<String>> headers = CastUtils
             .cast((Map<?, ?>)message.get(Message.PROTOCOL_HEADERS));
 
         final TraceScopeHolder<TraceScope> holder = 
super.startTraceSpan(headers, getUri(message),
-                                                                         
(String)message
-                                                                             
.get(Message.HTTP_REQUEST_METHOD));
+             (String)message.get(Message.HTTP_REQUEST_METHOD));
 
         if (holder != null) {
             message.getExchange().put(TRACE_SPAN, holder);
diff --git 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryStopInterceptor.java
 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryStopInterceptor.java
index cd129ae519..c11c4d8ce8 100644
--- 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryStopInterceptor.java
+++ 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/OpenTelemetryStopInterceptor.java
@@ -29,12 +29,17 @@ import org.apache.cxf.message.MessageUtils;
 import org.apache.cxf.phase.Phase;
 
 import io.opentelemetry.api.OpenTelemetry;
+import io.opentelemetry.api.trace.Tracer;
 
 public class OpenTelemetryStopInterceptor extends 
AbstractOpenTelemetryInterceptor {
     public OpenTelemetryStopInterceptor(final OpenTelemetry openTelemetry, 
final String instrumentationName) {
         super(Phase.POST_MARSHAL, openTelemetry, instrumentationName);
     }
 
+    public OpenTelemetryStopInterceptor(final OpenTelemetry openTelemetry, 
final Tracer tracer) {
+        super(Phase.POST_MARSHAL, openTelemetry, tracer);
+    }
+
     @Override
     public void handleMessage(Message message) throws Fault {
         Map<String, List<Object>> responseHeaders = CastUtils
diff --git 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/jaxrs/OpenTelemetryClientProvider.java
 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/jaxrs/OpenTelemetryClientProvider.java
index 9e237fd520..ca308f0b2a 100644
--- 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/jaxrs/OpenTelemetryClientProvider.java
+++ 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/jaxrs/OpenTelemetryClientProvider.java
@@ -29,6 +29,7 @@ import 
org.apache.cxf.tracing.opentelemetry.AbstractOpenTelemetryClientProvider;
 import org.apache.cxf.tracing.opentelemetry.TraceScope;
 
 import io.opentelemetry.api.OpenTelemetry;
+import io.opentelemetry.api.trace.Tracer;
 
 @Provider
 public class OpenTelemetryClientProvider extends 
AbstractOpenTelemetryClientProvider
@@ -38,6 +39,10 @@ public class OpenTelemetryClientProvider extends 
AbstractOpenTelemetryClientProv
         super(openTelemetry, instrumentationName);
     }
 
+    public OpenTelemetryClientProvider(final OpenTelemetry openTelemetry, 
final Tracer tracer) {
+        super(openTelemetry, tracer);
+    }
+
     @Override
     public void filter(final ClientRequestContext requestContext) throws 
IOException {
         final TraceScopeHolder<TraceScope> holder = 
super.startTraceSpan(requestContext.getStringHeaders(),
diff --git 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/jaxrs/OpenTelemetryFeature.java
 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/jaxrs/OpenTelemetryFeature.java
index 701fa62830..83f74847d9 100644
--- 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/jaxrs/OpenTelemetryFeature.java
+++ 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/jaxrs/OpenTelemetryFeature.java
@@ -20,14 +20,17 @@ package org.apache.cxf.tracing.opentelemetry.jaxrs;
 
 import io.opentelemetry.api.GlobalOpenTelemetry;
 import io.opentelemetry.api.OpenTelemetry;
+import io.opentelemetry.api.trace.Tracer;
 import jakarta.ws.rs.core.Feature;
 import jakarta.ws.rs.core.FeatureContext;
 import jakarta.ws.rs.ext.Provider;
 
 @Provider
 public class OpenTelemetryFeature implements Feature {
+    public static final String DEFAULT_INSTRUMENTATION_NAME = "org.apache.cxf";
+
     private final OpenTelemetry openTelemetry;
-    private final String instrumentationName;
+    private final Tracer tracer;
 
     public OpenTelemetryFeature() {
         this(GlobalOpenTelemetry.get());
@@ -38,19 +41,22 @@ public class OpenTelemetryFeature implements Feature {
     }
 
     public OpenTelemetryFeature(final OpenTelemetry openTelemetry) {
-        this(openTelemetry,
-             
org.apache.cxf.tracing.opentelemetry.OpenTelemetryFeature.DEFAULT_INSTRUMENTATION_NAME);
+        this(openTelemetry, DEFAULT_INSTRUMENTATION_NAME);
     }
 
     public OpenTelemetryFeature(final OpenTelemetry openTelemetry, final 
String instrumentationName) {
+        this(openTelemetry, openTelemetry.getTracer(instrumentationName));
+    }
+
+    public OpenTelemetryFeature(final OpenTelemetry openTelemetry, final 
Tracer tracer) {
         this.openTelemetry = openTelemetry;
-        this.instrumentationName = instrumentationName;
+        this.tracer = tracer;
     }
 
     @Override
     public boolean configure(FeatureContext context) {
-        context.register(new OpenTelemetryProvider(openTelemetry, 
instrumentationName));
-        context.register(new 
OpenTelemetryContextProvider(openTelemetry.getTracer(instrumentationName)));
+        context.register(new OpenTelemetryProvider(openTelemetry, tracer));
+        context.register(new OpenTelemetryContextProvider(tracer));
         return true;
     }
 }
diff --git 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/jaxrs/OpenTelemetryProvider.java
 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/jaxrs/OpenTelemetryProvider.java
index c2a1da8e96..4523a57c21 100644
--- 
a/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/jaxrs/OpenTelemetryProvider.java
+++ 
b/integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/jaxrs/OpenTelemetryProvider.java
@@ -33,6 +33,7 @@ import 
org.apache.cxf.tracing.opentelemetry.AbstractOpenTelemetryProvider;
 import org.apache.cxf.tracing.opentelemetry.TraceScope;
 
 import io.opentelemetry.api.OpenTelemetry;
+import io.opentelemetry.api.trace.Tracer;
 
 @Provider
 public class OpenTelemetryProvider extends AbstractOpenTelemetryProvider
@@ -44,6 +45,10 @@ public class OpenTelemetryProvider extends 
AbstractOpenTelemetryProvider
         super(openTelemetry, instrumentationName);
     }
 
+    public OpenTelemetryProvider(final OpenTelemetry openTelemetry, final 
Tracer tracer) {
+        super(openTelemetry, tracer);
+    }
+
     @Override
     public void filter(final ContainerRequestContext requestContext) throws 
IOException {
         final TraceScopeHolder<TraceScope> holder = 
super.startTraceSpan(requestContext.getHeaders(),

Reply via email to