You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by re...@apache.org on 2023/08/21 16:16:42 UTC
[cxf] branch main updated: CXF-8457: Provide OpenTelemetry support (minor API usability improvements)
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 <dr...@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(),