diff --git a/extensions/opentracing/deployment/src/main/java/org/apache/camel/quarkus/component/opentracing/deployment/OpenTracingProcessor.java b/extensions/opentracing/deployment/src/main/java/org/apache/camel/quarkus/component/opentracing/deployment/OpenTracingProcessor.java
index 63bb6cf..02afd6b 100644
--- a/extensions/opentracing/deployment/src/main/java/org/apache/camel/quarkus/component/opentracing/deployment/OpenTracingProcessor.java
+++ b/extensions/opentracing/deployment/src/main/java/org/apache/camel/quarkus/component/opentracing/deployment/OpenTracingProcessor.java
@@ -18,12 +18,10 @@
 
 import io.opentracing.Tracer;
 import io.quarkus.arc.deployment.BeanContainerBuildItem;
-import io.quarkus.deployment.annotations.BuildProducer;
 import io.quarkus.deployment.annotations.BuildStep;
 import io.quarkus.deployment.annotations.ExecutionTime;
 import io.quarkus.deployment.annotations.Record;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
-import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
 import org.apache.camel.quarkus.component.opentracing.CamelOpenTracingConfig;
 import org.apache.camel.quarkus.component.opentracing.CamelOpenTracingRecorder;
 import org.apache.camel.quarkus.core.deployment.CamelBeanBuildItem;
@@ -38,11 +36,6 @@
     }
 
     @BuildStep
-    void process(BuildProducer<NativeImageResourceBuildItem> resource) {
-        resource.produce(new NativeImageResourceBuildItem("META-INF/services/org.apache.camel.opentracing.SpanDecorator"));
-    }
-
-    @BuildStep
     @Record(ExecutionTime.STATIC_INIT)
     CamelBeanBuildItem setupCamelOpenTracingTracer(CamelOpenTracingConfig config, CamelOpenTracingRecorder recorder,
             BeanContainerBuildItem beanContainer) {
diff --git a/extensions/opentracing/runtime/src/main/java/org/apache/camel/quarkus/component/opentracing/PlatformHttpSpanDecorator.java b/extensions/opentracing/runtime/src/main/java/org/apache/camel/quarkus/component/opentracing/PlatformHttpSpanDecorator.java
deleted file mode 100644
index 8adbdb1..0000000
--- a/extensions/opentracing/runtime/src/main/java/org/apache/camel/quarkus/component/opentracing/PlatformHttpSpanDecorator.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.quarkus.component.opentracing;
-
-import org.apache.camel.opentracing.decorators.AbstractHttpSpanDecorator;
-
-/**
- * Camel OpenTracing SpanDecorator for the platform-http component
- */
-public class PlatformHttpSpanDecorator extends AbstractHttpSpanDecorator {
-
-    @Override
-    public String getComponent() {
-        return "platform-http";
-    }
-}
diff --git a/extensions/opentracing/runtime/src/main/resources/META-INF/services/org.apache.camel.opentracing.SpanDecorator b/extensions/opentracing/runtime/src/main/resources/META-INF/services/org.apache.camel.opentracing.SpanDecorator
deleted file mode 100644
index 468c7a4..0000000
--- a/extensions/opentracing/runtime/src/main/resources/META-INF/services/org.apache.camel.opentracing.SpanDecorator
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-org.apache.camel.quarkus.component.opentracing.PlatformHttpSpanDecorator
