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(),