This is an automated email from the ASF dual-hosted git repository. reta pushed a commit to branch 3.5.x-fixes in repository https://gitbox.apache.org/repos/asf/cxf.git
commit 0c97e93ebc069636674f651ab733a9f92ae5db33 Author: Andriy Redko <[email protected]> AuthorDate: Mon Aug 21 12:16:28 2023 -0400 CXF-8457: Provide OpenTelemetry support (minor API usability improvements) (cherry picked from commit 22d97aa326eefc6c4758c24179cf564d9b4bc47f) # Conflicts: # integration/tracing/tracing-opentelemetry/src/main/java/org/apache/cxf/tracing/opentelemetry/jaxrs/OpenTelemetryFeature.java (cherry picked from commit d786f282eeffc8e76d3e5152a9e49103d550e6f9) --- .../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 | 15 +++++++++++++-- .../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, 112 insertions(+), 24 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 eda7265da2..94974f56dc 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 @@ -26,7 +26,7 @@ import javax.ws.rs.core.Response; import demo.jaxrs.tracing.OpenTelemetrySetup; 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; @@ -38,7 +38,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..c1f9a4c76a 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 60f3edc11f..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,9 +41,14 @@ 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); } @@ -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 6b682a5cc2..2da133a8cf 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) @@ -51,9 +52,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()); @@ -72,6 +77,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 bf69979be0..d4aed68a4d 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 @@ -30,6 +30,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 @@ -39,6 +40,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 3e404d6e5a..55d5ca109d 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 @@ -24,11 +24,14 @@ import javax.ws.rs.ext.Provider; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.api.trace.Tracer; @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()); @@ -39,19 +42,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 d68132881d..c2f75a854c 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 @@ -34,6 +34,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 @@ -45,6 +46,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(),
