Commits

Christian Müller committed 3e8f0a5

added performance tests for Apache ServiceMix based on Apache Camel

Comments (0)

Files changed (34)

servicemix-osgi/README.txt

+Apache ServiceMix 4.4.2 - powered by Camel
+
+Use Maven 2.x to build the artifacts as:
+
+    $ cd ~/resources/esbperformance/servicemix-osgi
+    $ mvn install
+
+Increase heap memory by editing {SMX_HOME}/bin/servicemix to read as follows
+
+    JAVA_MIN_MEM=2048M
+    JAVA_MAX_MEM=2048M
+    
+Copy the configuration files from servicemix-osgi/etc into {SMX_HOME}/etc
+    This reduce the number of features which are started by default.
+
+Start ServiceMix as
+
+    $ cd bin
+    $ ./servicemix
+
+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.servicemix-osgi/proxy/1.0.0
+ 	karaf@trun> install -s mvn:org.apache.cmueller.camel.esbperf.servicemix-osgi/cbr/1.0.0
+	karaf@trun> install -s mvn:org.apache.cmueller.camel.esbperf.servicemix-osgi/soap-hbr/1.0.0
+	karaf@trun> install -s mvn:org.apache.cmueller.camel.esbperf.servicemix-osgi/http-hbr/1.0.0
+	karaf@trun> install -s mvn:org.apache.cmueller.camel.esbperf.servicemix-osgi/xslt/1.0.0
+	karaf@trun> install -s mvn:org.apache.cmueller.camel.esbperf.servicemix-osgi/secure-proxy/1.0.0
+    
+Before executing the performance test, re-generate the WS-Security related requests as ServiceMix is particular about the timestamps used
+    $ cd client-scripts
+    $ ./recreate-secure-requests.sh
+
+Execute the performance test as follows
+
+    $ cd ~/client-scripts
+    $ ./loadtest.sh http://localhost:8192/service > servicemix-4.4.2.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:8193/service/CBRProxy
+    wsdl-url        : http://localhost:8193/service/CBRProxy?wsdl
+
+SOAP Header CBR Proxy
+    url             : http://localhost:8194/service/CBRSOAPHeaderProxy
+    wsdl-url        : http://localhost:8194/service/CBRSOAPHeaderProxy?wsdl
+
+Transport Header CBR Proxy
+    url             : http://localhost:8195/service/CBRTransportHeaderProxy
+    wsdl-url        : http://localhost:8195/service/CBRTransportHeaderProxy?wsdl
+
+XSLT Transformation Proxy
+    url             : http://localhost:8196/service/XSLTProxy
+    wsdl-url        : http://localhost:8196/service/XSLTProxy?wsdl
+
+WS-Security Proxy
+    url             : http://localhost:8197/service/SecureProxy
+    wsdl-url        : http://localhost:8197/service/SecureProxy?wsdl
+

servicemix-osgi/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>servicemix-osgi</artifactId>
+        <version>1.0.0</version>
+        <relativePath>..</relativePath>
+    </parent>
+    
+    <groupId>org.apache.cmueller.camel.esbperf.servicemix-osgi</groupId>
+    <artifactId>cbr</artifactId>
+    <packaging>bundle</packaging>
+    
+    <dependencies>
+        <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,
+                            org.springframework.beans.factory.config,
+                            *
+                        </Import-Package>
+                    </instructions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

servicemix-osgi/cbr/src/main/resources/META-INF/spring/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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:camel="http://camel.apache.org/schema/spring"
+    xmlns:cxf="http://camel.apache.org/schema/cxf"
+    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+    xmlns:r="http://someuri"
+    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://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd">
+
+    <import resource="classpath:META-INF/cxf/cxf.xml" />
+
+    <cxf:cxfEndpoint id="cbrProxy"
+        address="http://0.0.0.0:8193/service/CBRProxy"
+        endpointName="service:CBREchoServicePort"
+        serviceName="service:CBRProxy"
+        wsdlURL="META-INF/wsdl/CBRWSDL-consumer-embedded.wsdl"
+        xmlns:service="http://services.samples/xsd">
+        
+        <cxf:properties>
+            <entry key="dataFormat" value="MESSAGE" />
+        </cxf:properties>
+    </cxf:cxfEndpoint>
+
+    <cxf:cxfEndpoint id="echoService"
+        address="http://localhost:9000/service/EchoService"
+        endpointName="service:CBREchoServicePort"
+        serviceName="service:CBREchoService"
+        wsdlURL="META-INF/wsdl/CBRWSDL-provider-embedded.wsdl"
+        bindingId="service:EchoServiceSOAP11Binding"
+        xmlns:service="http://services.samples/xsd">
+        
+        <cxf:properties>
+            <entry key="dataFormat" value="MESSAGE" />
+        </cxf:properties>
+    </cxf:cxfEndpoint>
+
+    <camelContext xmlns="http://camel.apache.org/schema/spring">
+        <route streamCache="true">
+            <from uri="cxf:bean:cbrProxy" />
+            <filter>
+                <xquery>/soapenv:Envelope/soapenv:Header/r:routing='xadmin;server1;community#1.0##'</xquery>
+                <to uri="cxf:bean:echoService" />
+            </filter>
+        </route>
+    </camelContext>
+</beans>

servicemix-osgi/cbr/src/main/resources/META-INF/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>
+

servicemix-osgi/cbr/src/main/resources/META-INF/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>
+

servicemix-osgi/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.
+#
+################################################################################
+
+#
+# Comma separated list of features repositories to register by default
+#
+featuresRepositories=mvn:org.apache.karaf.assemblies.features/standard/2.2.4/xml/features,mvn:org.apache.karaf.assemblies.features/enterprise/2.2.4/xml/features,mvn:org.apache.servicemix.nmr/apache-servicemix-nmr/1.5.0/xml/features,mvn:org.apache.servicemix/apache-servicemix/4.4.2/xml/features,mvn:org.apache.camel.karaf/apache-camel/2.8.5/xml/features,mvn:org.apache.activemq/activemq-karaf/5.5.1/xml/features
+
+#
+# Comma separated list of features to install at startup
+#
+#featuresBoot=karaf-framework,config,activemq-broker,activemq-spring,cxf-specs,camel,camel-activemq,camel-cxf,camel-blueprint,war
+featuresBoot=karaf-framework,config,cxf-specs,camel,camel-cxf,camel-saxon,camel-blueprint

servicemix-osgi/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>
+        <artifactId>servicemix-osgi</artifactId>
+        <groupId>org.apache.cmueller.camel.esbperf</groupId>
+        <version>1.0.0</version>
+        <relativePath>..</relativePath>
+    </parent>
+    
+    <groupId>org.apache.cmueller.camel.esbperf.servicemix-osgi</groupId>
+    <artifactId>http-hbr</artifactId>
+    <packaging>bundle</packaging>
+    
+    <dependencies>
+        <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,
+                            org.springframework.beans.factory.config,
+                            *
+                        </Import-Package>
+                    </instructions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

servicemix-osgi/http-hbr/src/main/resources/META-INF/spring/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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:camel="http://camel.apache.org/schema/spring"
+    xmlns:cxf="http://camel.apache.org/schema/cxf"
+    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://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd">
+
+    <import resource="classpath:META-INF/cxf/cxf.xml" />
+
+    <cxf:cxfEndpoint id="cbrProxy"
+        address="http://0.0.0.0:8195/service/CBRProxy"
+        endpointName="service:CBRTransportHeaderEchoServicePort"
+        serviceName="service:CBRTransportHeaderProxy"
+        wsdlURL="META-INF/wsdl/HBRTransportWSDL-consumer-embedded.wsdl"
+        xmlns:service="http://services.samples/xsd">
+        
+        <cxf:properties>
+            <entry key="dataFormat" value="MESSAGE" />
+        </cxf:properties>
+    </cxf:cxfEndpoint>
+
+    <cxf:cxfEndpoint id="echoService"
+        address="http://localhost:9000/service/EchoService"
+        endpointName="service:HBRTransportEchoServicePort"
+        serviceName="service:HBRTransportEchoService"
+        wsdlURL="META-INF/wsdl/HBRTransportWSDL-provider-embedded.wsdl"
+        bindingId="service:EchoServiceSOAP11Binding"
+        xmlns:service="http://services.samples/xsd">
+        
+        <cxf:properties>
+            <entry key="dataFormat" value="MESSAGE" />
+        </cxf:properties>
+    </cxf:cxfEndpoint>
+
+    <camelContext xmlns="http://camel.apache.org/schema/spring">
+        <route streamCache="true">
+            <from uri="cxf:bean:cbrProxy" />
+            <filter>
+                <simple>${in.header.routing} == 'xadmin;server1;community#1.0##'</simple>
+                <to uri="cxf:bean:echoService" />
+            </filter>
+        </route>
+    </camelContext>
+</beans>

servicemix-osgi/http-hbr/src/main/resources/META-INF/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>
+

servicemix-osgi/http-hbr/src/main/resources/META-INF/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>
+

servicemix-osgi/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>
+    <groupId>org.apache.cmueller.camel.esbperf</groupId>
+    <artifactId>servicemix-osgi</artifactId>
+    <version>1.0.0</version>
+    <packaging>pom</packaging>
+
+    <properties>
+        <org.apache.camel.version>2.8.5</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>

servicemix-osgi/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>servicemix-osgi</artifactId>
+        <version>1.0.0</version>
+        <relativePath>..</relativePath>
+    </parent>
+
+    <groupId>org.apache.cmueller.camel.esbperf.servicemix-osgi</groupId>
+    <artifactId>proxy</artifactId>
+    <packaging>bundle</packaging>
+    
+    <dependencies>
+        <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,
+                            org.springframework.beans.factory.config,
+                            *
+                        </Import-Package>
+                    </instructions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

servicemix-osgi/proxy/src/main/resources/META-INF/spring/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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:camel="http://camel.apache.org/schema/spring"
+    xmlns:cxf="http://camel.apache.org/schema/cxf"
+    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://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd">
+
+    <import resource="classpath:META-INF/cxf/cxf.xml" />
+
+    <cxf:cxfEndpoint id="directProxy"
+        address="http://0.0.0.0:8192/service/DirectProxy"
+        endpointName="service:EchoServicePort"
+        serviceName="service:DirectProxy"
+        wsdlURL="META-INF/wsdl/ProxyWSDL-consumer-embedded.wsdl"
+        xmlns:service="http://services.samples/xsd">
+        
+        <cxf:properties>
+            <entry key="dataFormat" value="MESSAGE" />
+        </cxf:properties>
+    </cxf:cxfEndpoint>
+
+    <cxf:cxfEndpoint id="echoService"
+        address="http://localhost:9000/service/EchoService"
+        endpointName="service:EchoServicePort"
+        serviceName="service:ProxyEchoService"
+        wsdlURL="META-INF/wsdl/ProxyWSDL-provider-embedded.wsdl"
+        bindingId="service:EchoServiceSOAP11Binding"
+        xmlns:service="http://services.samples/xsd">
+        
+        <cxf:properties>
+            <entry key="dataFormat" value="MESSAGE" />
+        </cxf:properties>
+    </cxf:cxfEndpoint>
+
+    <camelContext xmlns="http://camel.apache.org/schema/spring">
+        <route id="cxf-direct-proxy">
+            <from uri="cxf:bean:directProxy" />
+            <to uri="cxf:bean:echoService" />
+        </route>
+    </camelContext>
+</beans>

servicemix-osgi/proxy/src/main/resources/META-INF/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>
+

servicemix-osgi/proxy/src/main/resources/META-INF/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>
+

servicemix-osgi/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>
+        <artifactId>servicemix-osgi</artifactId>
+        <groupId>org.apache.cmueller.camel.esbperf</groupId>
+        <version>1.0.0</version>
+        <relativePath>..</relativePath>
+    </parent>
+    <groupId>org.apache.cmueller.camel.esbperf.servicemix-osgi</groupId>
+    <artifactId>secure-proxy</artifactId>
+    <packaging>bundle</packaging>
+    
+    <dependencies>
+        <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.5.11</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,
+                            org.springframework.beans.factory.config,
+                            *
+                        </Import-Package>
+                    </instructions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

servicemix-osgi/secure-proxy/src/main/java/org/apache/cmueller/camel/esbperf/smxosgi/secproxy/WSSecurityPasswordCallback.java

+package org.apache.cmueller.camel.esbperf.smxosgi.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");
+    }
+}

servicemix-osgi/secure-proxy/src/main/resources/META-INF/spring/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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:camel="http://camel.apache.org/schema/spring"
+    xmlns:cxf="http://camel.apache.org/schema/cxf"
+    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://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd">
+
+    <import resource="classpath:META-INF/cxf/cxf.xml" />
+
+    <cxf:cxfEndpoint id="directProxy"
+        address="http://0.0.0.0:8197/service/DirectProxy"
+        endpointName="service:EchoServicePort"
+        serviceName="service:SecureProxy"
+        wsdlURL="META-INF/wsdl/SecureProxyWSDL-consumer-embedded.wsdl"
+        xmlns:service="http://services.samples/xsd">
+
+        <cxf:inInterceptors>
+            <ref bean="TimestampSignEncrypt_Request" />
+        </cxf:inInterceptors>
+        <cxf:outInterceptors>
+            <ref bean="TimestampSignEncrypt_Response" />
+        </cxf:outInterceptors>
+        <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" />
+        </cxf:properties>
+    </cxf:cxfEndpoint>
+
+    <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor" id="TimestampSignEncrypt_Request">
+        <constructor-arg>
+            <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.smxosgi.secproxy.WSSecurityPasswordCallback" />
+                <entry key="timeToLive" value="1147483" />
+                <entry key="futureTimeToLive" value="1147483" />
+                <entry key="timestampStrict" value="false" />
+            </map>
+        </constructor-arg>
+    </bean>
+    
+    <bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor" id="TimestampSignEncrypt_Response">
+        <constructor-arg>
+            <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.smxosgi.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>
+        </constructor-arg>
+    </bean>
+
+    <cxf:cxfEndpoint id="echoService"
+        address="http://localhost:9000/service/EchoService"
+        endpointName="service:EchoServicePort"
+        serviceName="service:SecureEchoService"
+        wsdlURL="META-INF/wsdl/SecureProxyWSDL-provider-embedded.wsdl"
+        bindingId="service:EchoServiceSOAP11Binding"
+        xmlns:service="http://services.samples/xsd">
+
+        <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" />
+        </cxf:properties>
+    </cxf:cxfEndpoint>
+
+    <bean id="dropAllMessageHeadersStrategy" class="org.apache.camel.component.cxf.common.header.CxfHeaderFilterStrategy">
+        <property name="relayHeaders" value="false"/>
+    </bean>
+
+    <camelContext xmlns="http://camel.apache.org/schema/spring">
+        <route id="cxf-secure-proxy">
+            <from uri="cxf:bean:directProxy" />
+            <to uri="cxf:bean:echoService" />
+        </route>
+    </camelContext>
+</beans>

servicemix-osgi/secure-proxy/src/main/resources/META-INF/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>
+	    </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">