Commits

Ruwan Linton committed ce0ddb2 Merge

Merged in muellerc/esbperformance (pull request #9: added performance test based on Camel 2.11-SNAPSHOT and Karaf 2.3.0)

Comments (0)

Files changed (36)

+Apache Karaf 2.3.0 - powered by Camel
+
+SETUP
+=====
+
+Download Apache Karaf 2.3.0 from http://karaf.apache.org/index/community/download.html and unzip/untar the archive.
+
+Use Maven 3.x to build the artifacts as:
+    $ cd ~/resources/esbperformance/karaf
+    $ mvn install
+
+Increase heap memory by editing ${KARAF_HOME}/bin/karaf to read as follows:
+    JAVA_MIN_MEM=2048M
+    JAVA_MAX_MEM=2048M
+    
+Copy karaf/etc/* into ${KARAF_HOME}/etc
+
+
+
+INSTALLATION
+============
+
+Start Karaf as (make sure you removed ${KARAF_HOME}/data if this directory already exists):
+    $ cd ${KARAF_HOME}/bin
+    $ ./karaf
+
+First install the DirectProxy deployable artifacts into ServiceMix. On the ServiceMix console,
+type following to install and start each proxy services into ServiceMix
+    karaf@trun> install -s mvn:org.apache.cmueller.camel.esbperf.karaf/proxy/1.0.0-SNAPSHOT
+    karaf@trun> install -s mvn:org.apache.cmueller.camel.esbperf.karaf/cbr/1.0.0-SNAPSHOT
+    karaf@trun> install -s mvn:org.apache.cmueller.camel.esbperf.karaf/soap-hbr/1.0.0-SNAPSHOT
+    karaf@trun> install -s mvn:org.apache.cmueller.camel.esbperf.karaf/http-hbr/1.0.0-SNAPSHOT
+    karaf@trun> install -s mvn:org.apache.cmueller.camel.esbperf.karaf/xslt/1.0.0-SNAPSHOT
+    karaf@trun> install -s mvn:org.apache.cmueller.camel.esbperf.karaf/secure-proxy/1.0.0-SNAPSHOT
+    
+Before executing the performance test, re-generate the WS-Security related requests as Karaf is particular about the timestamps used
+    $ cd ${ULTRA_ESB_HOME}/samples/bin/
+    $ ./recreate-secure-requests.sh (they are generated into ${ULTRA_ESB_HOME}/samples/resources/requests)
+
+
+
+EXECUTION
+=========
+
+Execute the performance test as follows
+    $ cd ${ULTRA_ESB_HOME}/samples/bin/
+    $ ./loadtest.sh http://localhost:8192/service > karaf-2.3.0.txt
+
+
+Service URLs
+============
+
+Direct Proxy
+    url             : http://localhost:8192/service/DirectProxy
+    wsdl-url        : http://localhost:8192/service/DirectProxy?wsdl
+
+SOAP Body CBR Proxy
+    url             : http://localhost:8192/service/CBRProxy
+    wsdl-url        : http://localhost:8192/service/CBRProxy?wsdl
+
+SOAP Header CBR Proxy
+    url             : http://localhost:8192/service/CBRSOAPHeaderProxy
+    wsdl-url        : http://localhost:8192/service/CBRSOAPHeaderProxy?wsdl
+
+Transport Header CBR Proxy
+    url             : http://localhost:8192/service/CBRTransportHeaderProxy
+    wsdl-url        : http://localhost:8192/service/CBRTransportHeaderProxy?wsdl
+
+XSLT Transformation Proxy
+    url             : http://localhost:8192/service/XSLTProxy
+    wsdl-url        : http://localhost:8192/service/XSLTProxy?wsdl
+
+WS-Security Proxy
+    url             : http://localhost:8192/service/SecureProxy
+    wsdl-url        : http://localhost:8192/service/SecureProxy?wsdl
+

karaf/cbr/pom.xml

+<?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/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    
+    <parent>
+        <groupId>org.apache.cmueller.camel.esbperf</groupId>
+        <artifactId>karaf</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+    
+    <groupId>org.apache.cmueller.camel.esbperf.karaf</groupId>
+    <artifactId>cbr</artifactId>
+    <packaging>bundle</packaging>
+    
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-blueprint</artifactId>
+            <version>${org.apache.camel.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-cxf</artifactId>
+            <version>${org.apache.camel.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-saxon</artifactId>
+            <version>${org.apache.camel.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <defaultGoal>install</defaultGoal>
+        
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <version>${org.apache.felix.maven-bundle-plugin.version}</version>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
+                        <Import-Package>
+                            META-INF.cxf,
+                            org.apache.cxf,
+                            org.apache.cxf.binding,
+                            org.apache.cxf.binding.corba,
+                            org.apache.cxf.binding.soap,
+                            org.apache.cxf.binding.soap.spring,
+                            org.apache.cxf.bus,
+                            org.apache.cxf.bus.resource,
+                            org.apache.cxf.bus.spring,
+                            org.apache.cxf.buslifecycle,
+                            org.apache.cxf.catalog,
+                            org.apache.cxf.configuration,
+                            org.apache.cxf.configuration.spring,
+                            org.apache.cxf.endpoint,
+                            org.apache.cxf.headers,
+                            org.apache.cxf.management,
+                            org.apache.cxf.management.jmx,
+                            org.apache.cxf.phase,
+                            org.apache.cxf.resource,
+                            org.apache.cxf.transport,
+                            org.apache.cxf.transport.http,
+                            org.apache.cxf.transport.http.policy,
+                            org.apache.cxf.transport.http_jetty,
+                            org.apache.cxf.transport.jms,
+                            org.apache.cxf.transports.http,
+                            org.apache.cxf.workqueue,
+                            org.apache.cxf.wsdl,
+                            org.apache.cxf.wsdl11,
+                            org.apache.camel.component.cxf,
+                            org.apache.ws.security.action,
+                            org.apache.ws.security.processor,
+                            *
+                        </Import-Package>
+                    </instructions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

karaf/cbr/src/main/resources/OSGI-INF/blueprint/bundle-context.xml

+<?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.
+-->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:camel="http://camel.apache.org/schema/blueprint"
+    xmlns:camel-cxf="http://camel.apache.org/schema/blueprint/cxf"
+    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+    xmlns:s="http://services.samples/xsd"
+    xsi:schemaLocation="
+       http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
+       http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">
+
+    <camel-cxf:cxfEndpoint id="cbrProxy"
+        address="/CBRProxy"
+        endpointName="service:CBREchoServicePort"
+        serviceName="service:CBRProxy"
+        wsdlURL="wsdl/CBRWSDL-consumer-embedded.wsdl"
+        xmlns:service="http://services.samples/xsd">
+        
+        <camel-cxf:properties>
+            <entry key="dataFormat" value="MESSAGE" />
+        </camel-cxf:properties>
+    </camel-cxf:cxfEndpoint>
+
+    <camel-cxf:cxfEndpoint id="echoService"
+        address="http://localhost:9000/service/EchoService"
+        endpointName="service:CBREchoServicePort"
+        serviceName="service:CBREchoService"
+        wsdlURL="wsdl/CBRWSDL-provider-embedded.wsdl"
+        bindingId="service:EchoServiceSOAP11Binding"
+        xmlns:service="http://services.samples/xsd">
+        
+        <camel-cxf:properties>
+            <entry key="dataFormat" value="MESSAGE" />
+        </camel-cxf:properties>
+    </camel-cxf:cxfEndpoint>
+
+    <camel:camelContext>
+        <camel:jmxAgent id="agent" disabled="true"/>
+
+        <camel:route id="cxf-content-proxy" streamCache="true">
+            <camel:from uri="cxf:bean:cbrProxy" />
+            <camel:choice>
+                <camel:when>
+                    <camel:xquery>/soapenv:Envelope/soapenv:Body/s:buyStocks/order[1]/symbol='IBM'</camel:xquery>
+                    <camel:to uri="cxf:bean:echoService" />
+                </camel:when>
+            </camel:choice>
+        </camel:route>
+    </camel:camelContext>
+</blueprint>

karaf/cbr/src/main/resources/wsdl/CBRWSDL-consumer-embedded.wsdl

+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="EchoWSDL" targetNamespace="http://services.samples/xsd"
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://services.samples/xsd" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+    <types>
+	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+		    targetNamespace="http://services.samples/xsd"
+		    xmlns:tns="http://services.samples/xsd"
+		    elementFormDefault="unqualified">
+	    <xsd:complexType name="BuyStocks">
+		<xsd:sequence>
+		    <xsd:element name="order">
+		        <xsd:complexType>
+		            <xsd:sequence>
+		                <xsd:element name="symbol" type="xsd:string"></xsd:element>
+		                <xsd:element name="buyerID" type="xsd:string"></xsd:element>
+		                <xsd:element name="price" type="xsd:double"></xsd:element>
+		                <xsd:element name="volume" type="xsd:int"></xsd:element>
+		            </xsd:sequence>
+		        </xsd:complexType>
+		    </xsd:element>
+		</xsd:sequence>
+	    </xsd:complexType>
+	    <xsd:element name="buyStocks" type="tns:BuyStocks"></xsd:element>
+	</xsd:schema>
+    </types>
+    <message name="EchoOperationRequest">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    <message name="EchoOperationResponse">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    
+    <portType name="buyStocksPortType">
+        <operation name="buyStocksOperation">
+            <input name="message" message="tns:EchoOperationRequest"/>
+            <output name="message" message="tns:EchoOperationResponse"/>
+        </operation>
+        
+        <operation name="buyStocksOperation1K">
+            <input name="message1K" message="tns:EchoOperationRequest"/>
+            <output name="message1K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <input name="message5K" message="tns:EchoOperationRequest"/>
+            <output name="message5K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <input name="message10K" message="tns:EchoOperationRequest"/>
+            <output name="message10K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <input name="message100K" message="tns:EchoOperationRequest"/>
+            <output name="message100K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <input name="message500K" message="tns:EchoOperationRequest"/>
+            <output name="message500K" message="tns:EchoOperationResponse"/>
+        </operation>        
+    </portType>
+    <binding name="EchoServiceSOAP11Binding" type="tns:buyStocksPortType">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="buyStocksOperation">
+            <soap:operation soapAction="urn:buyStocks" style="document"/>
+            <input name="message">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        
+        <operation name="buyStocksOperation1K">
+            <soap:operation soapAction="urn:buyStocks.2" style="document"/>
+            <input name="message1K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message1K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation5K">
+            <soap:operation soapAction="urn:buyStocks.5" style="document"/>
+            <input name="message5K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message5K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation10K">
+            <soap:operation soapAction="urn:buyStocks.10" style="document"/>
+            <input name="message10K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message10K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation100K">
+            <soap:operation soapAction="urn:buyStocks.100" style="document"/>
+            <input name="message100K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message100K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation500K">
+            <soap:operation soapAction="urn:buyStocks.500" style="document"/>
+            <input name="message500K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message500K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+    </binding>
+    <service name="CBRProxy">
+        <port name="CBREchoServicePort" binding="tns:EchoServiceSOAP11Binding">
+            <soap:address location="http://localhost:8192/service/CBRProxy"/>
+        </port>
+    </service>
+</definitions>
+

karaf/cbr/src/main/resources/wsdl/CBRWSDL-provider-embedded.wsdl

+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="EchoWSDL" targetNamespace="http://services.samples/xsd"
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://services.samples/xsd" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+    <types>
+	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+		    targetNamespace="http://services.samples/xsd"
+		    xmlns:tns="http://services.samples/xsd"
+		    elementFormDefault="unqualified">
+	    <xsd:complexType name="BuyStocks">
+		<xsd:sequence>
+		    <xsd:element name="order">
+		        <xsd:complexType>
+		            <xsd:sequence>
+		                <xsd:element name="symbol" type="xsd:string"></xsd:element>
+		                <xsd:element name="buyerID" type="xsd:string"></xsd:element>
+		                <xsd:element name="price" type="xsd:double"></xsd:element>
+		                <xsd:element name="volume" type="xsd:int"></xsd:element>
+		            </xsd:sequence>
+		        </xsd:complexType>
+		    </xsd:element>
+		</xsd:sequence>
+	    </xsd:complexType>
+	    <xsd:element name="buyStocks" type="tns:BuyStocks"></xsd:element>
+	</xsd:schema>
+    </types>
+    <message name="EchoOperationRequest">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    <message name="EchoOperationResponse">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    
+    <portType name="buyStocksPortType">
+        <operation name="buyStocksOperation">
+            <input name="message" message="tns:EchoOperationRequest"/>
+            <output name="message" message="tns:EchoOperationResponse"/>
+        </operation>
+        
+        <operation name="buyStocksOperation1K">
+            <input name="message1K" message="tns:EchoOperationRequest"/>
+            <output name="message1K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <input name="message5K" message="tns:EchoOperationRequest"/>
+            <output name="message5K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <input name="message10K" message="tns:EchoOperationRequest"/>
+            <output name="message10K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <input name="message100K" message="tns:EchoOperationRequest"/>
+            <output name="message100K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <input name="message500K" message="tns:EchoOperationRequest"/>
+            <output name="message500K" message="tns:EchoOperationResponse"/>
+        </operation>        
+    </portType>
+    <binding name="EchoServiceSOAP11Binding" type="tns:buyStocksPortType">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="buyStocksOperation">
+            <soap:operation soapAction="urn:buyStocks" style="document"/>
+            <input name="message">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        
+        <operation name="buyStocksOperation1K">
+            <soap:operation soapAction="urn:buyStocks.2" style="document"/>
+            <input name="message1K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message1K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation5K">
+            <soap:operation soapAction="urn:buyStocks.5" style="document"/>
+            <input name="message5K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message5K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation10K">
+            <soap:operation soapAction="urn:buyStocks.10" style="document"/>
+            <input name="message10K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message10K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation100K">
+            <soap:operation soapAction="urn:buyStocks.100" style="document"/>
+            <input name="message100K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message100K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation500K">
+            <soap:operation soapAction="urn:buyStocks.500" style="document"/>
+            <input name="message500K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message500K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+    </binding>
+    <service name="CBREchoService">
+        <port name="CBREchoServicePort" binding="tns:EchoServiceSOAP11Binding">
+            <soap:address location="http://localhost:9000/service/EchoService"/>
+        </port>
+    </service>
+</definitions>
+

karaf/etc/jetty.xml

+<?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.
+-->
+<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//
+DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
+
+<Configure class="org.eclipse.jetty.server.Server">
+    <Call name="addConnector">
+        <Arg>
+            <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
+                <Set name="host">
+                    <Property name="jetty.host" />
+                </Set>
+                <Set name="port">
+                    <Property name="jetty.port" default="8192" />
+                </Set>
+                <Set name="maxIdleTime">300000</Set>
+                <Set name="Acceptors">2</Set>
+                <Set name="statsOn">false</Set>
+                <Set name="confidentialPort">8443</Set>
+                <Set name="lowResourcesConnections">20000</Set>
+                <Set name="lowResourcesMaxIdleTime">5000</Set>
+            </New>
+        </Arg>
+    </Call>
+</Configure>

karaf/etc/org.apache.cxf.osgi.cfg

+################################################################################
+#
+#    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.cxf.servlet.context=/service

karaf/etc/org.apache.karaf.features.cfg

+################################################################################
+#
+#    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.
+#
+################################################################################
+
+respectStartLvlDuringFeatureStartup=false
+
+#
+# Comma separated list of features repositories to register by default
+#
+featuresRepositories=mvn:org.apache.karaf.assemblies.features/standard/2.3.0/xml/features,mvn:org.apache.karaf.assemblies.features/enterprise/2.3.0/xml/features,mvn:org.apache.cxf.karaf/apache-cxf/2.7.1/xml/features,mvn:org.apache.camel.karaf/apache-camel/2.11-SNAPSHOT/xml/features
+
+#
+# Comma separated list of features to install at startup
+#
+featuresBoot=config,ssh,management,kar,camel,camel-cxf,camel-saxon,camel-blueprint

karaf/etc/org.ops4j.pax.logging.cfg

+################################################################################
+#
+#    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.
+#
+################################################################################
+
+# Root logger
+log4j.rootLogger=WARN, out, osgi:*
+log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer
+
+# To avoid flooding the log when using DEBUG level on an ssh connection and doing log:tail
+log4j.logger.org.apache.sshd.server.channel.ChannelSession = INFO
+
+# CONSOLE appender not used by default
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
+
+# File appender
+log4j.appender.out=org.apache.log4j.RollingFileAppender
+log4j.appender.out.layout=org.apache.log4j.PatternLayout
+log4j.appender.out.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
+log4j.appender.out.file=${karaf.data}/log/karaf.log
+log4j.appender.out.append=true
+log4j.appender.out.maxFileSize=100MB
+log4j.appender.out.maxBackupIndex=10
+
+# Sift appender
+log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender
+log4j.appender.sift.key=bundle.name
+log4j.appender.sift.default=karaf
+log4j.appender.sift.appender=org.apache.log4j.FileAppender
+log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
+log4j.appender.sift.appender.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %m%n
+log4j.appender.sift.appender.file=${karaf.data}/log/$\\{bundle.name\\}.log
+log4j.appender.sift.appender.append=true
+

karaf/etc/org.ops4j.pax.web.cfg

+################################################################################
+#
+#    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.
+#
+#################################################################################
+
+#################################################################################
+#
+#    This is a stub configuration file for pax-web ssl configuration.
+#    More details please refer to 
+#    http://wiki.ops4j.org/display/paxweb/SSL+Configuration
+#    Important Notes: If file named org.ops4j.pax.web.cfg in etc folder,
+#                     Pax Web will always try to read configuration from
+this = file, so any org.ops4j.pax.web configuration 
+in = http feature get ignored, that's why we name this 
+                      file as org.ops4j.pax.web.empty.stub.
+                      If you need this configuration file, rename it to
+                      org.ops4j.pax.web before use it.
+#################################################################################
+
+org.ops4j.pax.web.config.file=etc/jetty.xml
+javax.servlet.context.tempdir=data/pax-web-jsp

karaf/http-hbr/pom.xml

+<?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/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    
+    <parent>
+        <groupId>org.apache.cmueller.camel.esbperf</groupId>
+        <artifactId>karaf</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+    
+    <groupId>org.apache.cmueller.camel.esbperf.karaf</groupId>
+    <artifactId>http-hbr</artifactId>
+    <packaging>bundle</packaging>
+    
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-blueprint</artifactId>
+            <version>${org.apache.camel.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-cxf</artifactId>
+            <version>${org.apache.camel.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <defaultGoal>install</defaultGoal>
+        
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <version>${org.apache.felix.maven-bundle-plugin.version}</version>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
+                        <Import-Package>
+                            META-INF.cxf,
+                            org.apache.cxf,
+                            org.apache.cxf.binding,
+                            org.apache.cxf.binding.corba,
+                            org.apache.cxf.binding.soap,
+                            org.apache.cxf.binding.soap.spring,
+                            org.apache.cxf.bus,
+                            org.apache.cxf.bus.resource,
+                            org.apache.cxf.bus.spring,
+                            org.apache.cxf.buslifecycle,
+                            org.apache.cxf.catalog,
+                            org.apache.cxf.configuration,
+                            org.apache.cxf.configuration.spring,
+                            org.apache.cxf.endpoint,
+                            org.apache.cxf.headers,
+                            org.apache.cxf.management,
+                            org.apache.cxf.management.jmx,
+                            org.apache.cxf.phase,
+                            org.apache.cxf.resource,
+                            org.apache.cxf.transport,
+                            org.apache.cxf.transport.http,
+                            org.apache.cxf.transport.http.policy,
+                            org.apache.cxf.transport.http_jetty,
+                            org.apache.cxf.transport.jms,
+                            org.apache.cxf.transports.http,
+                            org.apache.cxf.workqueue,
+                            org.apache.cxf.wsdl,
+                            org.apache.cxf.wsdl11,
+                            org.apache.camel.component.cxf,
+                            org.apache.ws.security.action,
+                            org.apache.ws.security.processor,
+                            *
+                        </Import-Package>
+                    </instructions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

karaf/http-hbr/src/main/resources/OSGI-INF/blueprint/bundle-context.xml

+<?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.
+-->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:camel="http://camel.apache.org/schema/blueprint"
+    xmlns:camel-cxf="http://camel.apache.org/schema/blueprint/cxf"
+    xsi:schemaLocation="
+       http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
+       http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">
+
+    <camel-cxf:cxfEndpoint id="cbrProxy"
+        address="/CBRTransportHeaderProxy"
+        endpointName="service:CBRTransportHeaderEchoServicePort"
+        serviceName="service:CBRTransportHeaderProxy"
+        wsdlURL="wsdl/HBRTransportWSDL-consumer-embedded.wsdl"
+        xmlns:service="http://services.samples/xsd">
+        
+        <camel-cxf:properties>
+            <entry key="dataFormat" value="MESSAGE" />
+        </camel-cxf:properties>
+    </camel-cxf:cxfEndpoint>
+
+    <camel-cxf:cxfEndpoint id="echoService"
+        address="http://localhost:9000/service/EchoService"
+        endpointName="service:HBRTransportEchoServicePort"
+        serviceName="service:HBRTransportEchoService"
+        wsdlURL="wsdl/HBRTransportWSDL-provider-embedded.wsdl"
+        bindingId="service:EchoServiceSOAP11Binding"
+        xmlns:service="http://services.samples/xsd">
+        
+        <camel-cxf:properties>
+            <entry key="dataFormat" value="MESSAGE" />
+        </camel-cxf:properties>
+    </camel-cxf:cxfEndpoint>
+
+    <camel:camelContext>
+        <camel:jmxAgent id="agent" disabled="true"/>
+        
+        <camel:route id="cxf-transport-header-proxy">
+            <camel:from uri="cxf:bean:cbrProxy" />
+            <camel:choice>
+                <camel:when>
+                    <camel:simple>${in.header.routing} == 'xadmin;server1;community#1.0##'</camel:simple>
+                    <camel:to uri="cxf:bean:echoService" />
+                </camel:when>
+            </camel:choice>
+        </camel:route>
+    </camel:camelContext>
+</blueprint>

karaf/http-hbr/src/main/resources/wsdl/HBRTransportWSDL-consumer-embedded.wsdl

+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="EchoWSDL" targetNamespace="http://services.samples/xsd"
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://services.samples/xsd" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+    <types>
+	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+		    targetNamespace="http://services.samples/xsd"
+		    xmlns:tns="http://services.samples/xsd"
+		    elementFormDefault="unqualified">
+	    <xsd:complexType name="BuyStocks">
+		<xsd:sequence>
+		    <xsd:element name="order">
+		        <xsd:complexType>
+		            <xsd:sequence>
+		                <xsd:element name="symbol" type="xsd:string"></xsd:element>
+		                <xsd:element name="buyerID" type="xsd:string"></xsd:element>
+		                <xsd:element name="price" type="xsd:double"></xsd:element>
+		                <xsd:element name="volume" type="xsd:int"></xsd:element>
+		            </xsd:sequence>
+		        </xsd:complexType>
+		    </xsd:element>
+		</xsd:sequence>
+	    </xsd:complexType>
+	    <xsd:element name="buyStocks" type="tns:BuyStocks"></xsd:element>
+	</xsd:schema>
+    </types>
+    <message name="EchoOperationRequest">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    <message name="EchoOperationResponse">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    
+    <portType name="buyStocksPortType">
+        <operation name="buyStocksOperation">
+            <input name="message" message="tns:EchoOperationRequest"/>
+            <output name="message" message="tns:EchoOperationResponse"/>
+        </operation>
+        
+        <operation name="buyStocksOperation1K">
+            <input name="message1K" message="tns:EchoOperationRequest"/>
+            <output name="message1K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <input name="message5K" message="tns:EchoOperationRequest"/>
+            <output name="message5K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <input name="message10K" message="tns:EchoOperationRequest"/>
+            <output name="message10K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <input name="message100K" message="tns:EchoOperationRequest"/>
+            <output name="message100K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <input name="message500K" message="tns:EchoOperationRequest"/>
+            <output name="message500K" message="tns:EchoOperationResponse"/>
+        </operation>        
+    </portType>
+    <binding name="EchoServiceSOAP11Binding" type="tns:buyStocksPortType">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="buyStocksOperation">
+            <soap:operation soapAction="urn:buyStocks" style="document"/>
+            <input name="message">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        
+        <operation name="buyStocksOperation1K">
+            <soap:operation soapAction="urn:buyStocks.2" style="document"/>
+            <input name="message1K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message1K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation5K">
+            <soap:operation soapAction="urn:buyStocks.5" style="document"/>
+            <input name="message5K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message5K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation10K">
+            <soap:operation soapAction="urn:buyStocks.10" style="document"/>
+            <input name="message10K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message10K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation100K">
+            <soap:operation soapAction="urn:buyStocks.100" style="document"/>
+            <input name="message100K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message100K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation500K">
+            <soap:operation soapAction="urn:buyStocks.500" style="document"/>
+            <input name="message500K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message500K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+    </binding>
+    <service name="CBRTransportHeaderProxy">
+        <port name="CBRTransportHeaderEchoServicePort" binding="tns:EchoServiceSOAP11Binding">
+            <soap:address location="http://localhost:8192/service/CBRTransportHeaderProxy"/>
+        </port>
+    </service>
+</definitions>
+

karaf/http-hbr/src/main/resources/wsdl/HBRTransportWSDL-provider-embedded.wsdl

+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="EchoWSDL" targetNamespace="http://services.samples/xsd"
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://services.samples/xsd" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+    <types>
+	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+		    targetNamespace="http://services.samples/xsd"
+		    xmlns:tns="http://services.samples/xsd"
+		    elementFormDefault="unqualified">
+	    <xsd:complexType name="BuyStocks">
+		<xsd:sequence>
+		    <xsd:element name="order">
+		        <xsd:complexType>
+		            <xsd:sequence>
+		                <xsd:element name="symbol" type="xsd:string"></xsd:element>
+		                <xsd:element name="buyerID" type="xsd:string"></xsd:element>
+		                <xsd:element name="price" type="xsd:double"></xsd:element>
+		                <xsd:element name="volume" type="xsd:int"></xsd:element>
+		            </xsd:sequence>
+		        </xsd:complexType>
+		    </xsd:element>
+		</xsd:sequence>
+	    </xsd:complexType>
+	    <xsd:element name="buyStocks" type="tns:BuyStocks"></xsd:element>
+	</xsd:schema>
+    </types>
+    <message name="EchoOperationRequest">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    <message name="EchoOperationResponse">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    
+    <portType name="buyStocksPortType">
+        <operation name="buyStocksOperation">
+            <input name="message" message="tns:EchoOperationRequest"/>
+            <output name="message" message="tns:EchoOperationResponse"/>
+        </operation>
+        
+        <operation name="buyStocksOperation1K">
+            <input name="message1K" message="tns:EchoOperationRequest"/>
+            <output name="message1K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <input name="message5K" message="tns:EchoOperationRequest"/>
+            <output name="message5K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <input name="message10K" message="tns:EchoOperationRequest"/>
+            <output name="message10K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <input name="message100K" message="tns:EchoOperationRequest"/>
+            <output name="message100K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <input name="message500K" message="tns:EchoOperationRequest"/>
+            <output name="message500K" message="tns:EchoOperationResponse"/>
+        </operation>        
+    </portType>
+    <binding name="EchoServiceSOAP11Binding" type="tns:buyStocksPortType">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="buyStocksOperation">
+            <soap:operation soapAction="urn:buyStocks" style="document"/>
+            <input name="message">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        
+        <operation name="buyStocksOperation1K">
+            <soap:operation soapAction="urn:buyStocks.2" style="document"/>
+            <input name="message1K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message1K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation5K">
+            <soap:operation soapAction="urn:buyStocks.5" style="document"/>
+            <input name="message5K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message5K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation10K">
+            <soap:operation soapAction="urn:buyStocks.10" style="document"/>
+            <input name="message10K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message10K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation100K">
+            <soap:operation soapAction="urn:buyStocks.100" style="document"/>
+            <input name="message100K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message100K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation500K">
+            <soap:operation soapAction="urn:buyStocks.500" style="document"/>
+            <input name="message500K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message500K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+    </binding>
+    <service name="HBRTransportEchoService">
+        <port name="HBRTransportEchoServicePort" binding="tns:EchoServiceSOAP11Binding">
+            <soap:address location="http://localhost:9000/service/EchoService"/>
+        </port>
+    </service>
+</definitions>
+
+<?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/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.cmueller.camel.esbperf</groupId>
+    <artifactId>karaf</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <properties>
+        <org.apache.camel.version>2.11-SNAPSHOT</org.apache.camel.version>
+        <org.apache.felix.maven-bundle-plugin.version>2.3.7</org.apache.felix.maven-bundle-plugin.version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <modules>
+        <module>proxy</module>
+        <module>cbr</module>
+        <module>xslt</module>
+        <module>http-hbr</module>
+        <module>soap-hbr</module>
+        <module>secure-proxy</module>
+    </modules>
+</project>

karaf/proxy/pom.xml

+<?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/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.cmueller.camel.esbperf</groupId>
+        <artifactId>karaf</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.apache.cmueller.camel.esbperf.karaf</groupId>
+    <artifactId>proxy</artifactId>
+    <packaging>bundle</packaging>
+    
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-blueprint</artifactId>
+            <version>${org.apache.camel.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-cxf</artifactId>
+            <version>${org.apache.camel.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <defaultGoal>install</defaultGoal>
+        
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <version>${org.apache.felix.maven-bundle-plugin.version}</version>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
+                        <Import-Package>
+                            META-INF.cxf,
+                            org.apache.cxf,
+                            org.apache.cxf.binding,
+                            org.apache.cxf.binding.corba,
+                            org.apache.cxf.binding.soap,
+                            org.apache.cxf.binding.soap.spring,
+                            org.apache.cxf.bus,
+                            org.apache.cxf.bus.resource,
+                            org.apache.cxf.bus.spring,
+                            org.apache.cxf.buslifecycle,
+                            org.apache.cxf.catalog,
+                            org.apache.cxf.configuration,
+                            org.apache.cxf.configuration.spring,
+                            org.apache.cxf.endpoint,
+                            org.apache.cxf.headers,
+                            org.apache.cxf.management,
+                            org.apache.cxf.management.jmx,
+                            org.apache.cxf.phase,
+                            org.apache.cxf.resource,
+                            org.apache.cxf.transport,
+                            org.apache.cxf.transport.http,
+                            org.apache.cxf.transport.http.policy,
+                            org.apache.cxf.transport.http_jetty,
+                            org.apache.cxf.transport.jms,
+                            org.apache.cxf.transports.http,
+                            org.apache.cxf.workqueue,
+                            org.apache.cxf.wsdl,
+                            org.apache.cxf.wsdl11,
+                            org.apache.camel.component.cxf,
+                            org.apache.ws.security.action,
+                            org.apache.ws.security.processor,
+                            *
+                        </Import-Package>
+                    </instructions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

karaf/proxy/src/main/resources/OSGI-INF/blueprint/bundle-context.xml

+<?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.
+-->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:camel="http://camel.apache.org/schema/blueprint"
+    xmlns:camel-cxf="http://camel.apache.org/schema/blueprint/cxf"
+    xsi:schemaLocation="
+       http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
+       http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">
+
+    <camel-cxf:cxfEndpoint id="directProxy"
+        address="/DirectProxy"
+        endpointName="service:EchoServicePort"
+        serviceName="service:DirectProxy"
+        wsdlURL="wsdl/ProxyWSDL-consumer-embedded.wsdl"
+        xmlns:service="http://services.samples/xsd">
+        
+        <camel-cxf:properties>
+            <entry key="dataFormat" value="MESSAGE" />
+        </camel-cxf:properties>
+    </camel-cxf:cxfEndpoint>
+
+    <camel-cxf:cxfEndpoint id="echoService"
+        address="http://localhost:9000/service/EchoService"
+        endpointName="service:EchoServicePort"
+        serviceName="service:ProxyEchoService"
+        wsdlURL="wsdl/ProxyWSDL-provider-embedded.wsdl"
+        bindingId="service:EchoServiceSOAP11Binding"
+        xmlns:service="http://services.samples/xsd">
+        
+        <camel-cxf:properties>
+            <entry key="dataFormat" value="MESSAGE" />
+        </camel-cxf:properties>
+    </camel-cxf:cxfEndpoint>
+
+    <camel:camelContext>
+        <camel:jmxAgent id="agent" disabled="true"/>
+        
+        <camel:route id="cxf-direct-proxy">
+            <camel:from uri="cxf:bean:directProxy" />
+            <camel:to uri="cxf:bean:echoService" />
+        </camel:route>
+    </camel:camelContext>
+</blueprint>

karaf/proxy/src/main/resources/wsdl/ProxyWSDL-consumer-embedded.wsdl

+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="EchoWSDL" targetNamespace="http://services.samples/xsd"
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://services.samples/xsd" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+    <types>
+	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+		    targetNamespace="http://services.samples/xsd"
+		    xmlns:tns="http://services.samples/xsd"
+		    elementFormDefault="unqualified">
+	    <xsd:complexType name="BuyStocks">
+		<xsd:sequence>
+		    <xsd:element name="order">
+		        <xsd:complexType>
+		            <xsd:sequence>
+		                <xsd:element name="symbol" type="xsd:string"></xsd:element>
+		                <xsd:element name="buyerID" type="xsd:string"></xsd:element>
+		                <xsd:element name="price" type="xsd:double"></xsd:element>
+		                <xsd:element name="volume" type="xsd:int"></xsd:element>
+		            </xsd:sequence>
+		        </xsd:complexType>
+		    </xsd:element>
+		</xsd:sequence>
+	    </xsd:complexType>
+	    <xsd:element name="buyStocks" type="tns:BuyStocks"></xsd:element>
+	</xsd:schema>
+    </types>
+    <message name="EchoOperationRequest">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    <message name="EchoOperationResponse">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    
+    <portType name="buyStocksPortType">
+        <operation name="buyStocksOperation">
+            <input name="message" message="tns:EchoOperationRequest"/>
+            <output name="message" message="tns:EchoOperationResponse"/>
+        </operation>
+        
+        <operation name="buyStocksOperation1K">
+            <input name="message1K" message="tns:EchoOperationRequest"/>
+            <output name="message1K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <input name="message5K" message="tns:EchoOperationRequest"/>
+            <output name="message5K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <input name="message10K" message="tns:EchoOperationRequest"/>
+            <output name="message10K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <input name="message100K" message="tns:EchoOperationRequest"/>
+            <output name="message100K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <input name="message500K" message="tns:EchoOperationRequest"/>
+            <output name="message500K" message="tns:EchoOperationResponse"/>
+        </operation>        
+    </portType>
+    <binding name="EchoServiceSOAP11Binding" type="tns:buyStocksPortType">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="buyStocksOperation">
+            <soap:operation soapAction="urn:buyStocks" style="document"/>
+            <input name="message">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        
+        <operation name="buyStocksOperation1K">
+            <soap:operation soapAction="urn:buyStocks.2" style="document"/>
+            <input name="message1K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message1K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation5K">
+            <soap:operation soapAction="urn:buyStocks.5" style="document"/>
+            <input name="message5K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message5K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation10K">
+            <soap:operation soapAction="urn:buyStocks.10" style="document"/>
+            <input name="message10K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message10K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation100K">
+            <soap:operation soapAction="urn:buyStocks.100" style="document"/>
+            <input name="message100K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message100K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation500K">
+            <soap:operation soapAction="urn:buyStocks.500" style="document"/>
+            <input name="message500K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message500K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+    </binding>
+    <service name="DirectProxy">
+        <port name="EchoServicePort" binding="tns:EchoServiceSOAP11Binding">
+            <soap:address location="http://localhost:8192/service/DirectProxy"/>
+        </port>
+    </service>
+</definitions>
+

karaf/proxy/src/main/resources/wsdl/ProxyWSDL-provider-embedded.wsdl

+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="EchoWSDL" targetNamespace="http://services.samples/xsd"
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://services.samples/xsd" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+    <types>
+	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+		    targetNamespace="http://services.samples/xsd"
+		    xmlns:tns="http://services.samples/xsd"
+		    elementFormDefault="unqualified">
+	    <xsd:complexType name="BuyStocks">
+		<xsd:sequence>
+		    <xsd:element name="order">
+		        <xsd:complexType>
+		            <xsd:sequence>
+		                <xsd:element name="symbol" type="xsd:string"></xsd:element>
+		                <xsd:element name="buyerID" type="xsd:string"></xsd:element>
+		                <xsd:element name="price" type="xsd:double"></xsd:element>
+		                <xsd:element name="volume" type="xsd:int"></xsd:element>
+		            </xsd:sequence>
+		        </xsd:complexType>
+		    </xsd:element>
+		</xsd:sequence>
+	    </xsd:complexType>
+	    <xsd:element name="buyStocks" type="tns:BuyStocks"></xsd:element>
+	</xsd:schema>
+    </types>
+    <message name="EchoOperationRequest">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    <message name="EchoOperationResponse">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    
+    <portType name="buyStocksPortType">
+        <operation name="buyStocksOperation">
+            <input name="message" message="tns:EchoOperationRequest"/>
+            <output name="message" message="tns:EchoOperationResponse"/>
+        </operation>
+        
+        <operation name="buyStocksOperation1K">
+            <input name="message1K" message="tns:EchoOperationRequest"/>
+            <output name="message1K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <input name="message5K" message="tns:EchoOperationRequest"/>
+            <output name="message5K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <input name="message10K" message="tns:EchoOperationRequest"/>
+            <output name="message10K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <input name="message100K" message="tns:EchoOperationRequest"/>
+            <output name="message100K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <input name="message500K" message="tns:EchoOperationRequest"/>
+            <output name="message500K" message="tns:EchoOperationResponse"/>
+        </operation>        
+    </portType>
+    <binding name="EchoServiceSOAP11Binding" type="tns:buyStocksPortType">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="buyStocksOperation">
+            <soap:operation soapAction="urn:buyStocks" style="document"/>
+            <input name="message">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        
+        <operation name="buyStocksOperation1K">
+            <soap:operation soapAction="urn:buyStocks.2" style="document"/>
+            <input name="message1K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message1K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation5K">
+            <soap:operation soapAction="urn:buyStocks.5" style="document"/>
+            <input name="message5K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message5K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation10K">
+            <soap:operation soapAction="urn:buyStocks.10" style="document"/>
+            <input name="message10K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message10K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation100K">
+            <soap:operation soapAction="urn:buyStocks.100" style="document"/>
+            <input name="message100K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message100K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+        <operation name="buyStocksOperation500K">
+            <soap:operation soapAction="urn:buyStocks.500" style="document"/>
+            <input name="message500K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message500K">
+                <soap:body use="literal"/>
+            </output>
+        </operation> 
+    </binding>
+    <service name="ProxyEchoService">
+        <port name="EchoServicePort" binding="tns:EchoServiceSOAP11Binding">
+            <soap:address location="http://localhost:9000/service/EchoService"/>
+        </port>
+    </service>
+</definitions>
+

karaf/secure-proxy/pom.xml

+<?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/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    
+    <parent>
+        <groupId>org.apache.cmueller.camel.esbperf</groupId>
+        <artifactId>karaf</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.apache.cmueller.camel.esbperf.karaf</groupId>
+    <artifactId>secure-proxy</artifactId>
+    <packaging>bundle</packaging>
+    
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-blueprint</artifactId>
+            <version>${org.apache.camel.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-cxf</artifactId>
+            <version>${org.apache.camel.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.security</groupId>
+            <artifactId>wss4j</artifactId>
+            <version>1.6.5</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <defaultGoal>install</defaultGoal>
+        
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <version>${org.apache.felix.maven-bundle-plugin.version}</version>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
+                        <Import-Package>
+                            META-INF.cxf,
+                            org.apache.cxf,
+                            org.apache.cxf.binding,
+                            org.apache.cxf.binding.corba,
+                            org.apache.cxf.binding.soap,
+                            org.apache.cxf.binding.soap.spring,
+                            org.apache.cxf.bus,
+                            org.apache.cxf.bus.resource,
+                            org.apache.cxf.bus.spring,
+                            org.apache.cxf.buslifecycle,
+                            org.apache.cxf.catalog,
+                            org.apache.cxf.configuration,
+                            org.apache.cxf.configuration.spring,
+                            org.apache.cxf.endpoint,
+                            org.apache.cxf.headers,
+                            org.apache.cxf.management,
+                            org.apache.cxf.management.jmx,
+                            org.apache.cxf.phase,
+                            org.apache.cxf.resource,
+                            org.apache.cxf.transport,
+                            org.apache.cxf.transport.http,
+                            org.apache.cxf.transport.http.policy,
+                            org.apache.cxf.transport.http_jetty,
+                            org.apache.cxf.transport.jms,
+                            org.apache.cxf.transports.http,
+                            org.apache.cxf.workqueue,
+                            org.apache.cxf.wsdl,
+                            org.apache.cxf.wsdl11,
+                            org.apache.camel.component.cxf,
+                            org.apache.ws.security.action,
+                            org.apache.ws.security.processor,
+                            *
+                        </Import-Package>
+                    </instructions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

karaf/secure-proxy/src/main/java/org/apache/cmueller/camel/esbperf/karaf/secproxy/WSSecurityPasswordCallback.java

+package org.apache.cmueller.camel.esbperf.karaf.secproxy;
+
+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.ws.security.WSPasswordCallback;
+
+public class WSSecurityPasswordCallback implements CallbackHandler {
+
+    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
+        ((WSPasswordCallback) callbacks[0]).setPassword("password");
+    }
+}

karaf/secure-proxy/src/main/resources/OSGI-INF/blueprint/bundle-context.xml

+<?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.
+-->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:camel="http://camel.apache.org/schema/blueprint"
+    xmlns:camel-cxf="http://camel.apache.org/schema/blueprint/cxf"
+    xsi:schemaLocation="
+       http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
+       http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd
+       http://camel.apache.org/schema/blueprint/cxf http://camel.apache.org/schema/cxf/camel-cxf-blueprint.xsd">
+
+    <camel-cxf:cxfEndpoint id="secureProxy"
+        address="/SecureProxy"
+        endpointName="service:EchoServicePort"
+        serviceName="service:SecureProxy"
+        wsdlURL="wsdl/SecureProxyWSDL-consumer-embedded.wsdl"
+        xmlns:service="http://services.samples/xsd">
+
+        <camel-cxf:inInterceptors>
+            <ref component-id="TimestampSignEncrypt_Request" />
+        </camel-cxf:inInterceptors>
+        <camel-cxf:outInterceptors>
+            <ref component-id="TimestampSignEncrypt_Response" />
+        </camel-cxf:outInterceptors>
+        <camel-cxf:properties>
+            <entry key="dataFormat" value="PAYLOAD" />
+            <entry key="ws-security.enable.nonce.cache" value="false" />
+            <entry key="ws-security.enable.timestamp.cache" value="false" />
+        </camel-cxf:properties>
+    </camel-cxf:cxfEndpoint>
+
+    <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor" id="TimestampSignEncrypt_Request">
+        <argument>
+            <map>
+                <entry key="action" value="Timestamp Signature Encrypt" />
+                <entry key="signaturePropFile" value="wssecurity.properties" />
+                <entry key="decryptionPropFile" value="wssecurity.properties" />
+                <entry key="passwordCallbackClass" value="org.apache.cmueller.camel.esbperf.karaf.secproxy.WSSecurityPasswordCallback" />
+                <entry key="timeToLive" value="1147483" />
+                <entry key="futureTimeToLive" value="1147483" />
+                <entry key="timestampStrict" value="false" />
+            </map>
+        </argument>
+    </bean>
+    
+    <bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor" id="TimestampSignEncrypt_Response">
+        <argument>
+            <map>
+                <entry key="action" value="Timestamp Signature Encrypt" />
+                <entry key="user" value="Alice" />
+                <entry key="signaturePropFile" value="wssecurity.properties" />
+                <entry key="encryptionPropFile" value="wssecurity.properties" />
+                <entry key="encryptionUser" value="bob" />
+                <entry key="encryptionKeyIdentifier" value="SKIKeyIdentifier" />
+                <entry key="signatureKeyIdentifier" value="DirectReference" />
+                <entry key="passwordCallbackClass" value="org.apache.cmueller.camel.esbperf.karaf.secproxy.WSSecurityPasswordCallback" />
+                <entry key="signatureParts" value="{Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp;{Element}{http://schemas.xmlsoap.org/soap/envelope/}Body" />
+                <entry key="encryptionParts" value="{Content}{http://schemas.xmlsoap.org/soap/envelope/}Body" />
+                <entry key="encryptionSymAlgorithm" value="http://www.w3.org/2001/04/xmlenc#aes128-cbc" />
+                <entry key="timestampStrict" value="false" />
+                <entry key="isBSPCompliant" value="false" />
+            </map>
+        </argument>
+    </bean>
+
+    <camel-cxf:cxfEndpoint id="echoService"
+        address="http://localhost:9000/service/EchoService"
+        endpointName="service:EchoServicePort"
+        serviceName="service:SecureEchoService"
+        wsdlURL="wsdl/SecureProxyWSDL-provider-embedded.wsdl"
+        bindingId="service:EchoServiceSOAP11Binding"
+        xmlns:service="http://services.samples/xsd">
+
+        <camel-cxf:properties>
+            <entry key="dataFormat" value="PAYLOAD" />
+            <entry key="ws-security.enable.nonce.cache" value="false" />
+            <entry key="ws-security.enable.timestamp.cache" value="false" />
+        </camel-cxf:properties>
+    </camel-cxf:cxfEndpoint>
+
+    <bean id="dropAllMessageHeadersStrategy" class="org.apache.camel.component.cxf.common.header.CxfHeaderFilterStrategy">
+        <property name="relayHeaders" value="false"/>
+    </bean>
+
+    <camel:camelContext>
+        <camel:jmxAgent id="agent" disabled="true"/>
+
+        <camel:route id="cxf-secure-proxy" streamCache="true">
+            <camel:from uri="cxf:bean:secureProxy" />
+            <camel:to uri="cxf:bean:echoService" />
+        </camel:route>
+    </camel:camelContext>
+</blueprint>
Add a comment to this file

karaf/secure-proxy/src/main/resources/store.jks

Binary file added.

karaf/secure-proxy/src/main/resources/wsdl/SecureProxyWSDL-consumer-embedded.wsdl

+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="EchoWSDL" targetNamespace="http://services.samples/xsd"
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://services.samples/xsd" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+    <types>
+	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+		    targetNamespace="http://services.samples/xsd"
+		    xmlns:tns="http://services.samples/xsd"
+		    elementFormDefault="unqualified">
+	    <xsd:complexType name="BuyStocks">
+		<xsd:sequence>
+		    <xsd:element name="order">
+		        <xsd:complexType>
+		            <xsd:sequence>
+		                <xsd:element name="symbol" type="xsd:string"></xsd:element>
+		                <xsd:element name="buyerID" type="xsd:string"></xsd:element>
+		                <xsd:element name="price" type="xsd:double"></xsd:element>
+		                <xsd:element name="volume" type="xsd:int"></xsd:element>
+		            </xsd:sequence>
+		        </xsd:complexType>
+		    </xsd:element>
+		</xsd:sequence>