diff --git a/examples/camel-example-aggregate/src/main/resources/features.xml b/examples/camel-example-aggregate/src/main/resources/features.xml
deleted file mode 100644
index 53d829b..0000000
--- a/examples/camel-example-aggregate/src/main/resources/features.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<features>
-    <repository>mvn:org.apache.camel.karaf/apache-camel/${camel.version}/xml/features</repository>
-
-    <feature name='camel-example-aggregate' version='${camel.version}'>
-        <feature version="${camel.version}">camel</feature>
-        <feature version="${camel.version}">camel-stream</feature>
-        <bundle>mvn:org.apache.camel.example/camel-example-aggregate/${camel.version}</bundle>
-    </feature>
-
-</features>
diff --git a/examples/camel-example-cafe-endpointdsl/src/main/resources/features.xml b/examples/camel-example-cafe-endpointdsl/src/main/resources/features.xml
deleted file mode 100644
index 1a5c2a5..0000000
--- a/examples/camel-example-cafe-endpointdsl/src/main/resources/features.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<features>
-    <repository>mvn:org.apache.camel.karaf/apache-camel/${camel.version}/xml/features</repository>
-
-    <feature name='camel-example-cafe-endpointdsl' version='${camel.version}'>
-        <feature version="${camel.version}">camel</feature>
-        <bundle>mvn:org.apache.camel.example/camel-example-cafe-endpointdsl/${camel.version}</bundle>
-    </feature>
-
-</features>
\ No newline at end of file
diff --git a/examples/camel-example-cafe/src/main/resources/features.xml b/examples/camel-example-cafe/src/main/resources/features.xml
deleted file mode 100644
index 20242d1..0000000
--- a/examples/camel-example-cafe/src/main/resources/features.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<features>
-    <repository>mvn:org.apache.camel.karaf/apache-camel/${camel.version}/xml/features</repository>
-
-    <feature name='camel-example-cafe' version='${camel.version}'>
-        <feature version="${camel.version}">camel</feature>
-        <bundle>mvn:org.apache.camel.example/camel-example-cafe/${camel.version}</bundle>
-    </feature>
-
-</features>
\ No newline at end of file
diff --git a/examples/camel-example-cxf-ws-security-signature/README.adoc b/examples/camel-example-cxf-ws-security-signature/README.adoc
deleted file mode 100644
index 6531a29..0000000
--- a/examples/camel-example-cxf-ws-security-signature/README.adoc
+++ /dev/null
@@ -1,110 +0,0 @@
-== CXF WS-SECURITY OSGi HTTP WEB SERVICE
-
-=== Introduction
-
-Create a web service with CXF using WS-SECURITY Signature action and expose it through the OSGi HTTP Service, 
-the main purpose is to demonstrate how to use signaturePropRefId WSS4J configuration in OSGi container.
-
-=== Explanation
-
-The web service is a simple JAX-WS web service with ws-security Signature and UsernameToken action called HelloWorldSecurity. 
-The interface and the implementation are located in the `src/main/java/org/apache/camel/example/cxf/ws` directory of this example.
-
-The camel-context.xml file, located in the `src/main/resources/META-INF/spring` directory:
-
-[arabic]
-Configures the web service endpoint as follows:
-....
-    <jaxws:endpoint id="helloWorld"
-        implementor="org.apache.camel.example.cxf.ws.HelloWorldImpl"
-        address="/HelloWorldSecurity">
-        <jaxws:inInterceptors>
-            <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
-                <constructor-arg>
-                    <map>
-                        <entry key="action" value="UsernameToken Signature"/>
-                        <entry key="passwordType" value="PasswordText"/>
-                        <entry key="passwordCallbackRef">
-                            <ref bean="myPasswordCallback"/>
-                        </entry>
-                        <entry key="signaturePropRefId" value="wsCryptoProperties"/>
-                        <entry key="wsCryptoProperties" value-ref="wsCryptoProperties"/>
-                    </map>
-                </constructor-arg>
-            </bean>
-            <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
-        </jaxws:inInterceptors>
-    </jaxws:endpoint>
-    
-    <util:properties id="wsCryptoProperties">
-       <prop key="org.apache.ws.security.crypto.provider">org.apache.ws.security.components.crypto.Merlin</prop>
-       <prop key="org.apache.ws.security.crypto.merlin.keystore.type">jks</prop>
-       <prop key="org.apache.ws.security.crypto.merlin.keystore.password">storepassword</prop>
-       <prop key="org.apache.ws.security.crypto.merlin.keystore.file">server-truststore.jks</prop>
-    </util:properties>
-....
-
-=== Build
-
-You will need to compile this example first:
-
-....
-mvn install
-....
-
-=== Run
-
-To run the example on Apache Karaf 4.x or newer
-
-==== Step 1: Karaf
-
-Launch the server
-
-....
-karaf / karaf.bat
-....
-
-==== Step 2: Add features
-
-Add features required
-
-....
-feature:install cxf
-feature:install camel
-feature:install camel-cxf
-....
-
-==== Step 3: Deploy
-
-Deploy the example
-
-....
-install -s mvn:org.apache.camel.example/camel-example-cxf-ws-security-signature/${version}
-....
-
-To view the service WSDL, open your browser and go to the following URL:
-
-http://localhost:8181/cxf/HelloWorldSecurity?wsdl
-
-=== Running a Client
-
-To run the java code client:
-
-[arabic]
-. Change to the /examples/camel-example-cxf-ws-security-signature
-directory.
-. Run the following command:
-+
-`+mvn compile exec:java+`
-+
-If the client request is successful, it will print out: Hello CXF
-
-=== Help and contributions
-
-If you hit any problem using Camel or have some feedback, then please
-https://camel.apache.org/support.html[let us know].
-
-We also love contributors, so
-https://camel.apache.org/contributing.html[get involved] :-)
-
-The Camel riders!
diff --git a/examples/camel-example-cxf-ws-security-signature/pom.xml b/examples/camel-example-cxf-ws-security-signature/pom.xml
deleted file mode 100644
index f1c108a..0000000
--- a/examples/camel-example-cxf-ws-security-signature/pom.xml
+++ /dev/null
@@ -1,161 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.camel.example</groupId>
-        <artifactId>examples</artifactId>
-        <version>3.5.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>camel-example-cxf-ws-security-signature</artifactId>
-    <packaging>jar</packaging>
-    <name>Camel :: Example :: CXF :: WS-Security Signature</name>
-    <description>CXF example using WS-Security Signature Action</description>
-
-    <properties>
-        <category>WebService</category>
-        <title>CXF using WS-Security Signature</title>
-        <camel.osgi.import.additional>
-            org.apache.cxf.*;version="${cxf-version-range}"
-        </camel.osgi.import.additional>
-    </properties>
-
-    <dependencyManagement>
-        <dependencies>
-            <!-- Add Camel BOM -->
-            <dependency>
-                <groupId>org.apache.camel</groupId>
-                <artifactId>camel-bom</artifactId>
-                <version>${camel.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-spring</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-cxf</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.cxf</groupId>
-            <artifactId>cxf-rt-ws-security</artifactId>
-            <version>${cxf-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-            <version>${commons-io-version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <version>${slf4j-api-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-log4j12</artifactId>
-            <version>${slf4j-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-            <version>${log4j-version}</version>
-        </dependency>
-
-    </dependencies>
-
-    <build>
-        <defaultGoal>install</defaultGoal>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.camel</groupId>
-                <artifactId>camel-bundle-plugin</artifactId>
-                <configuration>
-                    <instructions>
-                        <Bundle-SymbolicName>camel-example-cxf-ws-security-signature</Bundle-SymbolicName>
-                        <Bundle-Name>Camel :: Example :: CXF :: WS-Security Signature</Bundle-Name>
-                        <Import-Package>
-                            javax.jws,
-                            javax.xml.bind.annotation,
-                            javax.xml.namespace,
-                            javax.wsdl,
-                            org.apache.cxf.bus,
-                            org.apache.cxf.bus.spring,
-                            org.apache.cxf.bus.resource,
-                            org.apache.cxf.configuration.spring,
-                            org.apache.cxf.resource,
-                            org.apache.cxf.transport.http,
-                            org.apache.cxf.ws.security.wss4j,
-                            org.springframework.beans.factory.config,
-                            javax.security.auth.callback,
-                            org.apache.wss4j.common.ext,
-                            org.apache.cxf.binding.soap.saaj,
-                            org.apache.commons.io
-                        </Import-Package>
-                    </instructions>
-                </configuration>
-            </plugin>
-            <plugin>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <source>1.8</source>
-                    <target>1.8</target>
-                </configuration>
-            </plugin>
-            <plugin>
-                <artifactId>maven-resources-plugin</artifactId>
-                <configuration>
-                    <encoding>UTF-8</encoding>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.camel</groupId>
-                <artifactId>camel-maven-plugin</artifactId>
-                <version>${camel.version}</version>
-                <configuration>
-                    <fileApplicationContextUri>src/main/resources/META-INF/spring/camel-context.xml
-                    </fileApplicationContextUri>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>exec-maven-plugin</artifactId>
-                <configuration>
-                    <mainClass>org.apache.camel.example.cxf.ws.Client</mainClass>
-                    <includePluginDependencies>false</includePluginDependencies>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-</project>
diff --git a/examples/camel-example-cxf-ws-security-signature/src/main/java/org/apache/camel/example/cxf/ws/Client.java b/examples/camel-example-cxf-ws-security-signature/src/main/java/org/apache/camel/example/cxf/ws/Client.java
deleted file mode 100755
index 38e938b..0000000
--- a/examples/camel-example-cxf-ws-security-signature/src/main/java/org/apache/camel/example/cxf/ws/Client.java
+++ /dev/null
@@ -1,53 +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.example.cxf.ws;
-
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.URL;
-import java.net.URLConnection;
-
-import org.apache.commons.io.IOUtils;
-
-public class Client {
-
-    public static void main(String[] args) {
-        try {
-            new Client().sendRequest();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-    
-    public void sendRequest() throws Exception {
-        URLConnection connection = new URL("http://localhost:8181/cxf/HelloWorldSecurity")
-                .openConnection();
-        connection.setDoInput(true);
-        connection.setDoOutput(true);
-        OutputStream os = connection.getOutputStream();
-        // Post the request file.
-        InputStream fis = getClass().getClassLoader().getResourceAsStream("org/apache/camel/example/cxf/ws/request.xml");
-        IOUtils.copy(fis, os);
-        // Read the response.
-        InputStream is = connection.getInputStream();
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        IOUtils.copy(is, baos);
-        System.out.println(baos.toString());
-    }
-
-}
diff --git a/examples/camel-example-cxf-ws-security-signature/src/main/java/org/apache/camel/example/cxf/ws/HelloWorld.java b/examples/camel-example-cxf-ws-security-signature/src/main/java/org/apache/camel/example/cxf/ws/HelloWorld.java
deleted file mode 100644
index a88825c..0000000
--- a/examples/camel-example-cxf-ws-security-signature/src/main/java/org/apache/camel/example/cxf/ws/HelloWorld.java
+++ /dev/null
@@ -1,29 +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.example.cxf.ws;
-
-import javax.jws.WebMethod;
-import javax.jws.WebParam;
-import javax.jws.WebService;
-
-@WebService(name = "HelloWorld", targetNamespace = "http://cxf.apache.org/wsse/handler/helloworld")
-public interface HelloWorld {
-
-    @WebMethod
-    String sayHello(@WebParam(name = "toWhom") String to);
-
-}
diff --git a/examples/camel-example-cxf-ws-security-signature/src/main/java/org/apache/camel/example/cxf/ws/HelloWorldImpl.java b/examples/camel-example-cxf-ws-security-signature/src/main/java/org/apache/camel/example/cxf/ws/HelloWorldImpl.java
deleted file mode 100755
index 2598df0..0000000
--- a/examples/camel-example-cxf-ws-security-signature/src/main/java/org/apache/camel/example/cxf/ws/HelloWorldImpl.java
+++ /dev/null
@@ -1,33 +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.example.cxf.ws;
-
-import javax.jws.WebMethod;
-import javax.jws.WebParam;
-import javax.jws.WebService;
-
-@WebService(name = "HelloWorld", targetNamespace = "http://cxf.apache.org/wsse/handler/helloworld", 
-            endpointInterface = "org.apache.camel.example.cxf.ws.HelloWorld")
-public class HelloWorldImpl implements HelloWorld {
-
-    @Override
-    @WebMethod
-    public String sayHello(@WebParam(name = "toWhom") String toWhom) {
-        return "Hello " + toWhom;
-
-    }
-}
diff --git a/examples/camel-example-cxf-ws-security-signature/src/main/java/org/apache/camel/example/cxf/ws/UserPasswordCallback.java b/examples/camel-example-cxf-ws-security-signature/src/main/java/org/apache/camel/example/cxf/ws/UserPasswordCallback.java
deleted file mode 100644
index 766d462..0000000
--- a/examples/camel-example-cxf-ws-security-signature/src/main/java/org/apache/camel/example/cxf/ws/UserPasswordCallback.java
+++ /dev/null
@@ -1,39 +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.example.cxf.ws;
-
-import java.io.IOException;
-
-import javax.security.auth.callback.Callback;
-import javax.security.auth.callback.CallbackHandler;
-import javax.security.auth.callback.UnsupportedCallbackException;
-
-import org.apache.wss4j.common.ext.WSPasswordCallback;
-
-public class UserPasswordCallback implements CallbackHandler {
-
-    @Override
-    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
-
-        WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
-
-        if (pc.getIdentifier().equals("clientx509v1")) {
-            pc.setPassword("storepassword");
-        }
-    }
-
-}
diff --git a/examples/camel-example-cxf-ws-security-signature/src/main/resources/META-INF/spring/camel-context.xml b/examples/camel-example-cxf-ws-security-signature/src/main/resources/META-INF/spring/camel-context.xml
deleted file mode 100644
index 4feaeb6..0000000
--- a/examples/camel-example-cxf-ws-security-signature/src/main/resources/META-INF/spring/camel-context.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<!-- Configures the Camel Context-->
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:jaxws="http://cxf.apache.org/jaxws"
-       xmlns:util="http://www.springframework.org/schema/util"
-       xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
-       http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
-       http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
-
-  <bean id="myPasswordCallback" class="org.apache.camel.example.cxf.ws.UserPasswordCallback"/>
-
-  <!-- setup CXF endpoint -->
-  <jaxws:endpoint id="helloWorld"
-                  implementor="org.apache.camel.example.cxf.ws.HelloWorldImpl"
-                  address="/HelloWorldSecurity">
-    <jaxws:inInterceptors>
-      <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
-        <constructor-arg>
-          <map>
-            <entry key="action" value="UsernameToken Signature"/>
-            <entry key="passwordType" value="PasswordText"/>
-            <entry key="passwordCallbackRef">
-              <ref bean="myPasswordCallback"/>
-            </entry>
-            <entry key="signaturePropRefId" value="wsCryptoProperties"/>
-            <entry key="wsCryptoProperties" value-ref="wsCryptoProperties"/>
-          </map>
-        </constructor-arg>
-      </bean>
-      <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor"/>
-    </jaxws:inInterceptors>
-  </jaxws:endpoint>
-
-  <util:properties id="wsCryptoProperties">
-    <prop key="org.apache.ws.security.crypto.provider">org.apache.ws.security.components.crypto.Merlin</prop>
-    <prop key="org.apache.ws.security.crypto.merlin.keystore.type">jks</prop>
-    <prop key="org.apache.ws.security.crypto.merlin.keystore.password">storepassword</prop>
-    <prop key="org.apache.ws.security.crypto.merlin.keystore.file">server-truststore.jks</prop>
-  </util:properties>
-
-  <camelContext xmlns="http://camel.apache.org/schema/spring">
-    <!-- no routes -->
-  </camelContext>
-
-</beans>
diff --git a/examples/camel-example-cxf-ws-security-signature/src/main/resources/log4j.properties b/examples/camel-example-cxf-ws-security-signature/src/main/resources/log4j.properties
deleted file mode 100644
index 4923459..0000000
--- a/examples/camel-example-cxf-ws-security-signature/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,32 +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.
-## ---------------------------------------------------------------------------
-
-log4j.rootLogger=INFO, out
-
-#log4j.logger.org.apache.camel=DEBUG
-
-# CONSOLE appender not used by default
-log4j.appender.out=org.apache.log4j.ConsoleAppender
-log4j.appender.out.layout=org.apache.log4j.PatternLayout
-log4j.appender.out.layout.ConversionPattern=[%30.30t] %-30.30c{1} %-5p %m%n
-#log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
-
-# File appender
-log4j.appender.file=org.apache.log4j.FileAppender
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d %-5p %c{1} - %m %n
-log4j.appender.file.file=target/camel-test.log
diff --git a/examples/camel-example-cxf-ws-security-signature/src/main/resources/org/apache/camel/example/cxf/ws/request.xml b/examples/camel-example-cxf-ws-security-signature/src/main/resources/org/apache/camel/example/cxf/ws/request.xml
deleted file mode 100644
index cc6ff6c..0000000
--- a/examples/camel-example-cxf-ws-security-signature/src/main/resources/org/apache/camel/example/cxf/ws/request.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version = "1.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.
-
--->
-
-<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Header><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" soap:mustUnderstand="1"><wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="X509-56A4FA49B9789303C913375794129791">MIICNjCCAZ8CBEo1POgwDQYJKoZIhvcNAQEEBQAwYjELMAkGA1UEBhMCSU4xCzAJBgNVBAgTAk1QMQ8wDQYDVQQHEwZJTkRPUkUxDzANBgNVBAoTBkFwYWNoZTEMMAoGA1UECxMDRGV2MRYwFAYDVQQDEw1NYXlhbmsgTWlzaHJhMB4XDTA5MDYxNDE4MDk0NFoXDTE5MDYxMjE4MDk0NFowYjELMAkGA1UEBhMCSU4xCzAJBgNVBAgTAk1QMQ8wDQYDVQQHEwZJTkRPUkUxDzANBgNVBAoTBkFwYWNoZTEMMAoGA1UECxMDRGV2MRYwFAYDVQQDEw1NYXlhbmsgTWlzaHJhMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCdPhcimx7/CFX4H8isKEKCbRK6Kr+qeCMCby9I/Q/NY1bNqy6nsD+Y5BxSc2yCUnyLsRdmAHIxUwRQ9X5s8FP9+T1nwuoPzBvjcoZqWgDhe9RvydkijuzsFan/PY4oemd5EIoQu80ZpcFqb00xyDY3DkPgymXNsZ2uAM1ccsx90QIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAGXIE7pFNInlyjHnq89zgvHJfZNE44El6Cd5V55JvL+LZUnynU2Y8WaUwD2Qvc1QTr9R7u6nhZ8abyB7TSx3idiN6KUSNtBHOeWUTmfGbAJqO/J6R2A9J20KCvss28D05rRI3z52VQHnMBzgirL6M5ClWBZfl2Q3bNKnOImjoNhK</wsse:BinarySecurityToken><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="SIG-3"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="soap"/></ds:CanonicalizationMethod><ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><ds:Reference URI="#id-2"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList=""/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><ds:DigestValue>kK3EYmWcAMgQmq0d+yhzRuG4Myg=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>H0MlO30M1NNQ1M8h1CYvRxWpCKYH9qTkRDpsIZCIdAkjW5lQlWNQ7svUCKpZZzo+dFlS/JeU1dHIXVp7JxB+dLiRBMuuJ4Z4ONwzsBA03Kx+/jNYc3aScLRwW85DMTaVnTqHLIPoO4uhJyUfKicOF3/BHp1A+Ctj5zeBb0LmIN8=</ds:SignatureValue><ds:KeyInfo Id="KI-56A4FA49B9789303C913375794129862"><wsse:SecurityTokenReference wsu:Id="STR-56A4FA49B9789303C913375794129893"><wsse:Reference URI="#X509-56A4FA49B9789303C913375794129791" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/></wsse:SecurityTokenReference></ds:KeyInfo></ds:Signature><wsse:UsernameToken wsu:Id="UsernameToken-1"><wsse:Username>clientx509v1</wsse:Username><wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">storepassword</wsse:Password></wsse:UsernameToken></wsse:Security></soap:Header><soap:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-2"><ns2:sayHello xmlns:ns2="http://cxf.apache.org/wsse/handler/helloworld"><toWhom>CXF</toWhom></ns2:sayHello></soap:Body></soap:Envelope>
diff --git a/examples/camel-example-cxf-ws-security-signature/src/main/resources/server-truststore.jks b/examples/camel-example-cxf-ws-security-signature/src/main/resources/server-truststore.jks
deleted file mode 100644
index 2447028..0000000
--- a/examples/camel-example-cxf-ws-security-signature/src/main/resources/server-truststore.jks
+++ /dev/null
Binary files differ
diff --git a/examples/pom.xml b/examples/pom.xml
index 78482de..bca90ed 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -107,7 +107,6 @@
         <module>camel-example-cxf</module>
         <module>camel-example-cxf-proxy</module>
         <module>camel-example-cxf-tomcat</module>
-        <module>camel-example-cxf-ws-security-signature</module>
         <module>camel-example-console</module>
         <module>camel-example-debezium</module>
         <module>camel-example-ftp</module>
