[maven-scm] copy for tag features-4.3.0

git-svn-id: https://svn.apache.org/repos/asf/servicemix/smx4/features/tags/features-4.3.0@1072512 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/trunk/.gitignore b/trunk/.gitignore
new file mode 100644
index 0000000..8e39efc
--- /dev/null
+++ b/trunk/.gitignore
@@ -0,0 +1,6 @@
+.settings
+.classpath
+.project
+target
+*.i??
+velocity.log
\ No newline at end of file
diff --git a/trunk/BUILDING b/trunk/BUILDING
new file mode 100644
index 0000000..c218581
--- /dev/null
+++ b/trunk/BUILDING
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ */
+
+Building Apache ServiceMix 4
+============================
+
+Initial Setup
+-------------
+
+1) Install J2SE 5.0 SDK, which can be downloaded from 
+   http://java.sun.com/j2se/1.5.0/download.jsp. Use version of 1.5.0_06 JDK.
+
+2) Make sure that your JAVA_HOME environment variable is set to the newly installed 
+   JDK location, and that your PATH includes %JAVA_HOME%\bin (windows) or 
+   $JAVA_HOME$/bin (unix).
+
+3) Install Maven 2.2.1, which can be downloaded from 
+   http://maven.apache.org/download.html. Make sure that your PATH includes 
+   the MVN_HOME/bin directory. 
+
+
+Building
+--------
+
+1) Change to the top level directory of Apache ServiceMix 4 source distribution.
+2) Run
+         $> mvn
+   This will compile Apache ServiceMix 4 and run all of the tests in the 
+   Apache ServiceMix Kernel source distribution. Alternatively, you can run
+         $> mvn -Pfastinstall
+   This will compile Apache ServiceMix 4 without running the tests and takes less
+   time to build.
+   Depending on the load of remote Maven 2.0 repositories, you may have 
+   to run "mvn" several times until the required dependencies are 
+   all located in your local maven repository. It usually takes some time for 
+   maven to download required dependencies in the first build.
+3) The distributions will be available under "assembly/target" directory.
+
diff --git a/trunk/LICENSE b/trunk/LICENSE
new file mode 100644
index 0000000..6b0b127
--- /dev/null
+++ b/trunk/LICENSE
@@ -0,0 +1,203 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed 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.
+
diff --git a/trunk/NOTICE b/trunk/NOTICE
new file mode 100644
index 0000000..f5c80bf
--- /dev/null
+++ b/trunk/NOTICE
@@ -0,0 +1,11 @@
+   =========================================================================

+   ==  NOTICE file for use with the Apache License, Version 2.0,          ==

+   ==  in this case for the Apache ServiceMix distribution.               ==

+   =========================================================================

+

+   This product contains software developed by

+   The Apache Software Foundation (http://www.apache.org/).

+

+   This product contains software developed by

+   Open Participation Software for Java (http://www.ops4j.org/).

+

diff --git a/trunk/README b/trunk/README
new file mode 100644
index 0000000..419bf1e
--- /dev/null
+++ b/trunk/README
@@ -0,0 +1,58 @@
+/*

+ * 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.

+ */

+

+Welcome to Apache ServiceMix 4 

+==============================

+Apache ServiceMix is an open source ESB (Enterprise Service Bus) that combines 

+the functionality of a Service Oriented Architecture (SOA) and an Event Driven

+Architecture (EDA)  to create an agile, enterprise ESB.

+

+Apache ServiceMix is an open source distributed ESB built from the ground up on 

+the  Java Business Integration (JBI) specification JSR 208 and released under 

+the Apache license. The goal of JBI is to allow components and services to be 

+integrated in a vendor independent way, allowing users and vendors to plug and 

+play.

+

+Getting Started

+===============

+For an Apache ServiceMix 4 source distribution, please read 

+BUILDING.txt for instructions on building Apache ServiceMix 4. 

+

+For an Apache ServiceMix 4 binary distribution, please read 

+RELEASE-NOTES.txt for installation instructions and list of supported 

+and unsupported features.

+

+Alternatively, you can also find out how to get started here:

+    http://servicemix.apache.org/smx4/

+

+If you need more help try talking to us on our mailing lists

+    http://servicemix.apache.org/mailing-lists.html

+

+If you find any issues with ServiceMix 4, please submit reports 

+with JIRA here:

+    http://issues.apache.org/activemq/browse/SMX4

+

+We welcome contributions, and encourage you to get involved in the 

+ServiceMix community. If you'd like to learn more about how you can 

+contribute, please see:

+    http://servicemix.apache.org/contributing.html

+

+Many thanks for using Apache ServiceMix.

+

+

+The ServiceMix Team

+http://servicemix.apache.org/team.html

diff --git a/trunk/RELEASE-NOTES b/trunk/RELEASE-NOTES
new file mode 100644
index 0000000..e315d43
--- /dev/null
+++ b/trunk/RELEASE-NOTES
@@ -0,0 +1,186 @@
+/*

+ * 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.

+ */

+

+                      Apache ServiceMix 4.3.0

+                  ================================

+ Overview

+ --------

+

+Apache ServiceMix 4.3.0 is a major release of the OSGi based ServiceMix ESB platform.  This release contains many

+bugfixes and feature enhancements over the 4.2.0 release.  ServiceMix 4.3.0 includes the following dependencies:

+

+- Apache Felix Karaf 2.1.3 (http://karaf.apache.org)

+  A lightweight OSGi container built on top of Apache Felix OSGi framework.  Karaf provides much of the core OSGi

+  functionality and features (SSH shell, console commands, provisioning, blueprint XML support, etc...)

+

+- Apache ServiceMix NMR 1.4.0

+  An OSGi based NMR and JBI container, with a new clustering engine ready for enterprise deployment

+

+- Apache ServiceMix Components 2011.01

+  OSGi and JBI compatible components for common integration bindings such as FTP, HTTP, JMS, etc. as well as

+  service engines such as Camel (Enterprise Integration Patterns), Quartz, JSR-223 Scripting, etc.

+

+

+ServiceMix 4.3.0 also ships with a web console for administering and deploying endpoints and components,

+additional OSGi bundles, and configuration files.  We also include support for running outof the box web applications

+via WAR file deployment.  This release includes preliminary implementations of the OSGi Enterprise Specification 4.2

+and includes support for OSGi fragment bundles.  OSGi framework support defauls to Apache Felix, but can be changed

+via a simple configuration paramater to use Eclipse Equinox.

+

+ Changelog

+ ---------

+The following list shows the bug fixes and enhancements included in this release.

+

+Release Notes - ServiceMix 4 - Version 4.3.0

+

+** Sub-task

+* [SMX4-543] - Improve Camel NMR component to leverage async camel routing

+

+** Bug

+* [SMX4-398] - openjpa bundle should import the transaction package without optional flag

+* [SMX4-415] - need add josql bundle to activemq feature

+* [SMX4-417] - calling <setHeader> with <groovy> expression can delete message and headers

+* [SMX4-455] - activemq feature missing dependencies; fails to start two bundles without camel-cxf installed

+* [SMX4-489] - ServiceMix 4.x/ Fuse 4.2 hangs when using command dev:show-tree

+* [SMX4-519] - Allow configuring Camel NMR endpoint to bypass thread pool for handling exchanges

+* [SMX4-520] - NMR Destination should check Exchange Status and Mep Pattern

+* [SMX4-522] - Camel NMR component: reponse NMR message contains reference to itself in property

+* [SMX4-527] - cxf nmr transport should copy over property headers and attachment between cxf message and nmr message

+* [SMX4-530] - servicemix-vfs fails with sftp

+* [SMX4-539] - Inconsistent use of Endpoint.INTERFACE_NAME in cxf nmr transport

+* [SMX4-541] - Jetty bundles export package is not correct

+* [SMX4-548] - remove javax.script package from config.properties for jre export package

+* [SMX4-561] - Servicemix flatpack component is missing the default fpconvert.properties, causing NullPointerException

+* [SMX4-564] - stacktrace dumped on console when shutdown smx

+* [SMX4-578] - Ensure that SecuritySubject is properly conveyed by cxf-nmr transport

+* [SMX4-581] - xpp3 bundle is missing META-INF/services/org.xmlpull.v1.XmlPullParserFactory needed to support zero configuation operation mode

+* [SMX4-585] - incorrect MTOM message for NMR transport

+* [SMX4-602] - Update Karaf jre package

+* [SMX4-608] - Drools package doesn't export org.drools.runtime.rule

+* [SMX4-648] - Camel NMR component does not propagate Exception when using an InOnly MEP

+* [SMX4-649] - config:* commands not available out-of-the-box

+* [SMX4-652] - camel example doesn't work

+* [SMX4-674] - ActiveMQ 5.4.1 feature has a missing dependency

+* [SMX4-706] - specify version for cxf-codegen-plugin in pluginManagement to avoid downloading latest snapshot cxf-codegen-plugin

+* [SMX4-708] - NMR adds null header in Camel Exchange ?

+* [SMX4-709] - Features pom contains duplicate dependency declaration

+* [SMX4-711] - check Exception from Camel Exchange at very first place to honor asyn processor in camel 2.5

+* [SMX4-720] - Several poms contain old JIRA URL

+* [SMX4-729] - "Ather URL Handler not available" messages in the log file

+* [SMX4-735] - Problem on install camel-cxf component for unresolved dependency org.apache.servicemix.specs/org.apache.servicemix.specs.jsr311-api_1.0/1.6.0

+* [SMX4-739] - add nmr features.xml dependency to make the kit build pass

+* [SMX4-748] - Improve logging policy to avoid impact on performances

+* [SMX4-749] - JBI deployer version range is not up to date

+* [SMX4-760] - JAXB API and implementation version mismatch in Camel features descriptor

+* [SMX4-761] - cxf-osgi example miss a package import which cause it fail with felix

+

+** Improvement

+* [SMX4-512] - Upgrade to ActiveMQ 5.3.1

+* [SMX4-523] - Use Camel Synchronization to ensure NMR exchange can be handled asynchronously

+* [SMX4-531] - Update the jsmpp bundle to 2.1.0

+* [SMX4-534] - Add quartz 1.8.1 bundle

+* [SMX4-536] - Add Quartz 1.8.2 bundle

+* [SMX4-538] - Add quartz 1.8.3 bundle

+* [SMX4-544] - Update poms to not have warnings with Maven 3

+* [SMX4-551] - upgrade to spring 3.x

+* [SMX4-552] - Upgrade to ActiveMQ 5.4

+* [SMX4-556] - Wrap the jaxb impl 2.1.13

+* [SMX4-560] - Prepare the upgrade to ActiveMQ 5.4.0

+* [SMX4-562] - Update flatpack to 3.2.0

+* [SMX4-565] - Upgrade to Karaf 2.0.0

+* [SMX4-567] - Normalize SMX4 naming convention of resources

+* [SMX4-573] - Rome bundle should try to load the configure file from local bundle classloader as a fallback

+* [SMX4-576] - Ensure that Subject is properly conveyed by camel-nmr component

+* [SMX4-579] - extract common used classes for itests

+* [SMX4-584] - Upgrade to the latest release of ServiceMix Bundles

+* [SMX4-586] - The Camel examples uses @deprecated namespace

+* [SMX4-588] - refactor NMRMessageHelper to use new api from cxf StaxUtis

+* [SMX4-591] - Upgrade to ActveMQ 5.4.0

+* [SMX4-592] - Add hibernate-validator 4.1.0.Final bundle

+* [SMX4-598] - HSQLDB bundles.

+* [SMX4-599] - Create drools-5.1.1 bundle with minimal set of dependencies

+* [SMX4-600] - Create antlr-runtime 3.2 bundle

+* [SMX4-601] - Upgrade to Karaf 2.1.0

+* [SMX4-603] - Upgrade to Camel 2.5.0

+* [SMX4-604] - Upgrade to CXF 2.2.11

+* [SMX4-606] - Make the executors/threadpool viewable as JMX mbeans

+* [SMX4-660] - Create OSGi wrap bundle for Jetty 6.1.25

+* [SMX4-667] - Upgrade to JAXP 1.4.4

+* [SMX4-673] - Upgrade to Karaf 2.1.1

+* [SMX4-676] - Upgrade to Karaf 2.1.2

+* [SMX4-689] - Upgrade to ActiveMQ 5.4.2

+* [SMX4-710] - Add Camel NMR blueprint example

+* [SMX4-713] - upgrade to cxf 2.3.1

+* [SMX4-716] - Upgrade to SMX components 2010.02

+* [SMX4-719] - Make camel-blueprint feature installed by default

+* [SMX4-728] - Add a Camel blueprint example

+* [SMX4-738] - remove org.apache.camel.osgi package import for camel-osgi example

+* [SMX4-740] - JAXB-IMPL 2.1.13 Release

+* [SMX4-741] - Upgrade to Karaf 2.1.3

+* [SMX4-742] - Upgrade to Spring 3.0.5.RELEASE

+* [SMX4-745] - Upgrade to Camel 2.6.0

+* [SMX4-746] - Upgrade to CXF 2.3.2

+* [SMX4-754] - Upgrade to ServiceMix Components 2011.01

+* [SMX4-755] - Upgrade to ServiceMix NMR 1.4.0

+* [SMX4-757] - Upgrade to Apache ODE 1.3.5

+

+** New Feature

+* [SMX4-558] - Add a wrap bundle of xmlbeans 2.5.0

+* [SMX4-559] - Add the wrap bundle of jsch-0.1.43

+* [SMX4-590] - Create OSGi bundle for Jasypt 1.6

+* [SMX4-614] - Documentation: Add a Getting Started Guide

+* [SMX4-675] - Bundles for Mongo DB

+

+** Task

+* [SMX4-524] - upgrade to cxf 2.2.7

+* [SMX4-528] - upgrade to cxf 2.2.8

+* [SMX4-533] - upgrade to cxf 2.2.9

+* [SMX4-542] - Upgrade to Camel 2.4.0

+* [SMX4-545] - Update SMX to use aries version of blueprint and latest Felix/Karaf stuff that also uses aries

+* [SMX4-547] - upgrade to use new karaf artifacts

+* [SMX4-553] - Upgrade to google protobuf 2.3.0

+* [SMX4-557] - Upgrade to Velocity 1.6.4

+* [SMX4-563] - upgrade aries to 0.1-r964701

+* [SMX4-574] - add commons-digester-1.8 bundle

+* [SMX4-575] - add commons-configuration-1.4 bundle

+* [SMX4-582] - upgrade to activemq 5.4

+* [SMX4-587] - upgrade to cxf 2.2.10

+* [SMX4-593] - Create Bundles for SIP API and RI.

+* [SMX4-607] - downgrade geronimo-annotation version to 1.0 from 1.1

+* [SMX4-613] - Create a wrap bundle dozer 5.3.0

+* [SMX4-668] - Upgrade to MVEL 2.0.18

+* [SMX4-671] - add scala 2.8.1 bundle

+* [SMX4-672] - Create a wrap bundle for Jetty 6.1.26

+* [SMX4-707] - Fix the camel-nmr failed unit tests

+

+** Test

+* [SMX4-554] - fix itests failure

+* [SMX4-568] - add cxf mtom test

+* [SMX4-650] - fix loan-broker-drools-su test failure

+* [SMX4-651] - add osgi service property for itests test client

+

+** Wish

+* [SMX4-540] - Jetty bundle 6.1.24

+

+

+See the README file for more general informations about ServiceMix 4.

+

+Thanks you for downloading ServiceMix.  Enjoy !

+

+The ServiceMix Team

+http://servicemix.apache.org/team.html

+

diff --git a/trunk/assembly/pom.xml b/trunk/assembly/pom.xml
new file mode 100644
index 0000000..e198f69
--- /dev/null
+++ b/trunk/assembly/pom.xml
@@ -0,0 +1,950 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.features</groupId>
+        <artifactId>features</artifactId>
+        <version>4.3.0</version>
+    </parent>
+
+    <groupId>org.apache.servicemix</groupId>
+    <artifactId>apache-servicemix</artifactId>
+    <packaging>pom</packaging>
+    <name>Apache ServiceMix :: Features :: Assembly</name>
+
+    <dependencies>
+        
+        <!-- Karaf -->
+        <dependency>
+            <groupId>org.apache.karaf</groupId>
+            <artifactId>apache-karaf</artifactId>
+            <type>zip</type>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.karaf</groupId>
+            <artifactId>apache-karaf</artifactId>
+            <type>tar.gz</type>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.karaf</groupId>
+            <artifactId>apache-karaf</artifactId>
+            <type>xml</type>
+            <classifier>features</classifier>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.karaf.deployer</groupId>
+            <artifactId>org.apache.karaf.deployer.war</artifactId>
+        </dependency>
+        
+        <!-- ServiceMix Components -->
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-bean</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-camel</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-cxf-bc</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-cxf-se</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-drools</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-eip</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-exec</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-file</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-ftp</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-http</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-jms</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-smpp</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-mail</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-osworkflow</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-quartz</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-saxon</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-scripting</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-snmp</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-validation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-vfs</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-wsn2005</artifactId>
+        </dependency>
+        
+        <!-- ServiceMix NMR -->
+        <dependency>
+            <groupId>org.apache.servicemix.nmr</groupId>
+            <artifactId>apache-servicemix-nmr</artifactId>
+            <type>zip</type>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.nmr</groupId>
+            <artifactId>apache-servicemix-nmr</artifactId>
+            <type>tar.gz</type>
+        </dependency>
+       
+        <dependency>
+            <groupId>org.apache.servicemix.nmr</groupId>
+            <artifactId>apache-servicemix-nmr</artifactId>
+            <type>xml</type>
+            <classifier>features</classifier>
+        </dependency>
+ 
+        <!-- ServiceMix Specs -->
+        <dependency>
+            <groupId>org.apache.servicemix.specs</groupId>
+            <artifactId>org.apache.servicemix.specs.activation-api-1.1</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.specs</groupId>
+            <artifactId>org.apache.servicemix.specs.jaxb-api-${jaxb.api.version}</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-jaxws_2.2_spec</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.specs</groupId>
+            <artifactId>org.apache.servicemix.specs.jsr311-api-1.1</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.specs</groupId>
+            <artifactId>org.apache.servicemix.specs.saaj-api-1.3</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.specs</groupId>
+            <artifactId>org.apache.servicemix.specs.scripting-api-1.0</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.specs</groupId>
+            <artifactId>org.apache.servicemix.specs.stax-api-1.0</artifactId>
+        </dependency>
+        
+        <!-- ServiceMix Utils and Shared -->
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-common</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-utils</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-soap</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>servicemix-soap2</artifactId>
+        </dependency>
+        
+        <!-- Aries -->
+        <dependency>
+            <groupId>org.apache.aries</groupId>
+            <artifactId>org.apache.aries.util</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.aries.transaction</groupId>
+            <artifactId>org.apache.aries.transaction.manager</artifactId>
+        </dependency>
+        
+        <!-- ActiveMQ -->
+        <dependency>
+            <groupId>org.apache.activemq</groupId>
+            <artifactId>activemq-blueprint</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.activemq</groupId>
+            <artifactId>activemq-console</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.activemq</groupId>
+            <artifactId>activemq-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.activemq</groupId>
+            <artifactId>activemq-karaf</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.activemq</groupId>
+            <artifactId>activemq-pool</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.activemq</groupId>
+            <artifactId>activemq-ra</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.activemq</groupId>
+            <artifactId>kahadb</artifactId>
+        </dependency>
+        
+        <!-- Camel -->
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-spring</artifactId>
+        </dependency>
+        
+        <!-- CXF -->
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-bundle</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-bindings-jbi</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-transports-jbi</artifactId>
+        </dependency>
+        
+        <!-- Geronimo -->
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-annotation_1.0_spec</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-j2ee-management_1.1_spec</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-jms_1.1_spec</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-jpa_2.0_spec</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-jta_1.1_spec</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-servlet_3.0_spec</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
+        </dependency>
+        
+        <!-- PAX Web -->
+        <dependency>
+            <groupId>org.ops4j.pax.web</groupId>
+            <artifactId>pax-web-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.web</groupId>
+            <artifactId>pax-web-extender-war</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.web</groupId>
+            <artifactId>pax-web-extender-whiteboard</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.web</groupId>
+            <artifactId>pax-web-jetty</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.web</groupId>
+            <artifactId>pax-web-jsp</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.web</groupId>
+            <artifactId>pax-web-runtime</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.web</groupId>
+            <artifactId>pax-web-spi</artifactId>
+        </dependency>
+        
+        <!-- PAX URL -->
+        <dependency>
+            <groupId>org.ops4j.pax.url</groupId>
+            <artifactId>pax-url-war</artifactId>
+        </dependency>
+        
+        <!-- Spring -->
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-asm</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-aop</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-beans</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context-support</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-expression</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-tx</artifactId>
+        </dependency>
+        
+        <!-- Spring OSGi -->
+        <dependency>
+            <groupId>org.springframework.osgi</groupId>
+            <artifactId>spring-osgi-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.osgi</groupId>
+            <artifactId>spring-osgi-extender</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.osgi</groupId>
+            <artifactId>spring-osgi-io</artifactId>
+        </dependency>
+        
+        <!-- Bundles -->
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.abdera</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.antlr-runtime</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.aopalliance</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.asm</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.bcel</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.cglib</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.commons-beanutils</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.commons-collections</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.commons-lang</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.commons-httpclient</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-net</groupId>
+            <artifactId>commons-net</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.commons-pool</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.commons-vfs</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.drools</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.fastinfoset</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.groovy</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.jaxb-impl</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.jdom</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.jdt-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.jetty</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.jruby</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.jsmpp</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.mvel</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.neethi</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.opensaml</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.oscore</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.osworkflow</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.oro</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.propertyset</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.quartz</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.rhino</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.saaj-impl</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.saxon</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.snmp4j</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.velocity</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.wsdl4j</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.xalan</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.xerces</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.xmlbeans</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.xmlsec</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.xmlresolver</artifactId>
+        </dependency>
+        
+        <!-- Other Dependencies -->
+        <dependency>
+            <groupId>com.google.code.scriptengines</groupId>
+            <artifactId>scriptengines-javascript</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.code.scriptengines</groupId>
+            <artifactId>scriptengines-jruby</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.code.scriptengines</groupId>
+            <artifactId>scriptengines-groovy</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.xml.parsers</groupId>
+            <artifactId>jaxp-ri</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>javax.mail</groupId>
+            <artifactId>mail</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.fusesource.commonman</groupId>
+            <artifactId>commons-management</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-jexl</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.schema</groupId>
+            <artifactId>XmlSchema</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-impl</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.security</groupId>
+            <artifactId>wss4j</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.xbean</groupId>
+            <artifactId>xbean-blueprint</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.xbean</groupId>
+            <artifactId>xbean-classloader</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.xbean</groupId>
+            <artifactId>xbean-spring</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.jettison</groupId>
+            <artifactId>jettison</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.woodstox</groupId>
+            <artifactId>stax2-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.woodstox</groupId>
+            <artifactId>woodstox-core-asl</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ode</groupId>
+            <artifactId>ode-jbi-karaf</artifactId>
+            <type>xml</type>
+            <classifier>features</classifier>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ode</groupId>
+            <artifactId>ode-jbi-karaf</artifactId>
+        </dependency>
+    </dependencies>
+    
+    <build>
+        <resources>
+            <resource>
+                <directory>${project.basedir}/src/main/filtered-resources</directory>
+                <filtering>true</filtering>
+                <includes>
+                    <include>**/*</include>
+                </includes>
+            </resource>
+        </resources>
+        <filters>
+            <filter>target/filter.txt</filter>
+        </filters>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>create-prop</id>
+                        <phase>generate-resources</phase>
+                        <configuration>
+                            <tasks>
+                                <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpathref="maven.plugin.classpath" />
+                                <property name="ant.regexp.regexpimpl" value="org.apache.tools.ant.util.regexp.Jdk14RegexpRegexp" />
+                                <property name="mv" value="${karaf.version}" />
+                                <echo message="Maven version: ${mv}" />
+                                <propertyregex property="ov.p1" input="${mv}" regexp="(\d+)(?:\.(\d+)(?:\.(\d+))?)?(?:[^a-zA-Z0-9](.*))?" replace="\1" defaultValue="0" />
+                                <propertyregex property="ov.p2" input="${mv}" regexp="(\d+)(?:\.(\d+)(?:\.(\d+))?)?(?:[^a-zA-Z0-9](.*))?" replace=".\2" defaultValue=".0" />
+                                <propertyregex property="ov.p3" input="${mv}" regexp="(\d+)(?:\.(\d+)(?:\.(\d+))?)?(?:[^a-zA-Z0-9](.*))?" replace=".\3" defaultValue=".0" />
+                                <propertyregex property="ov.p4" input="${mv}" regexp="(\d+)(?:\.(\d+)(?:\.(\d+))?)?(?:[^a-zA-Z0-9](.*))?" replace=".\4" defaultValue="" />
+                                <propertyregex property="ov.p1a" input="${ov.p1}" regexp="(.+)" replace="\1" defaultValue="0" />
+                                <propertyregex property="ov.p2a" input="${ov.p2}" regexp="(\..+)" replace="\1" defaultValue=".0" />
+                                <propertyregex property="ov.p3a" input="${ov.p3}" regexp="(\..+)" replace="\1" defaultValue=".0" />
+                                <propertyregex property="ov.p4a" input="${ov.p4}" regexp="(\..+)" replace="\1" defaultValue="" />
+                                <property name="ov" value="${ov.p1a}${ov.p2a}${ov.p3a}${ov.p4a}" />
+                                <echo message="OSGi version: ${ov}" />
+                                <mkdir dir="target" />
+                                <echo message="karaf.osgi.version = ${ov}" file="target/filter.txt" />
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.karaf.tooling</groupId>
+                <artifactId>features-maven-plugin</artifactId>
+                <version>${karaf.version}</version>
+                <executions>
+                    <execution>
+                        <id>add-features-to-repo</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>add-features-to-repo</goal>
+                        </goals>
+                        <configuration>
+                            <descriptors>
+                                <descriptor>mvn:org.apache.karaf/apache-karaf/${karaf.version}/xml/features</descriptor>
+                                <descriptor>mvn:org.apache.servicemix.nmr/apache-servicemix-nmr/${servicemix.nmr.version}/xml/features</descriptor>
+                                <descriptor>file:${basedir}/target/classes/activemq-features.xml</descriptor>
+                                <descriptor>file:${basedir}/target/classes/camel-features.xml</descriptor>
+                                <descriptor>mvn:org.apache.ode/ode-jbi-karaf/${ode.version}/xml/features</descriptor>
+                                <descriptor>file:${basedir}/target/classes/features.xml</descriptor>
+                            </descriptors>
+                            <features>
+                                <feature>activemq</feature>
+                                <feature>activemq-blueprint</feature>
+                                <feature>activemq-broker</feature>
+                                <feature>camel</feature>
+                                <feature>jbi-cluster</feature>
+                                <feature>war</feature>
+                                <!-- ServiceMix Components -->
+                                <feature>servicemix-cxf-bc</feature>
+                                <feature>servicemix-file</feature>
+                                <feature>servicemix-ftp</feature>
+                                <feature>servicemix-http</feature>
+                                <feature>servicemix-jms</feature>
+                                <feature>servicemix-mail</feature>
+                                <feature>servicemix-bean</feature>
+                                <feature>servicemix-camel</feature>
+                                <feature>servicemix-cxf-se</feature>
+                                <feature>servicemix-drools</feature>
+                                <feature>servicemix-eip</feature>
+                                <feature>servicemix-osworkflow</feature>
+                                <feature>servicemix-quartz</feature>
+                                <feature>servicemix-scripting</feature>
+                                <feature>servicemix-validation</feature>
+                                <feature>servicemix-saxon</feature>
+                                <feature>servicemix-wsn2005</feature>
+                                <feature>servicemix-snmp</feature>
+                                <feature>servicemix-vfs</feature>
+                                <feature>servicemix-smpp</feature>
+                            </features>
+                            <repository>target/features-repo</repository>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>filter</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>resources</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>copy</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.apache.servicemix.features</groupId>
+                                    <artifactId>org.apache.servicemix.features.branding</artifactId>
+                                    <version>${project.version}</version>
+                                    <outputDirectory>target/dependencies</outputDirectory>
+                                    <destFileName>servicemix-version.jar</destFileName>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>unpack-unix</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.apache.karaf</groupId>
+                                    <artifactId>apache-karaf</artifactId>
+                                    <type>tar.gz</type>
+                                    <outputDirectory>target/dependencies/unix</outputDirectory>
+                                </artifactItem>
+                                <artifactItem>
+                                    <groupId>org.apache.servicemix.nmr</groupId>
+                                    <artifactId>apache-servicemix-nmr</artifactId>
+                                    <type>tar.gz</type>
+                                    <outputDirectory>target/dependencies/unix</outputDirectory>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>unpack-win</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.apache.karaf</groupId>
+                                    <artifactId>apache-karaf</artifactId>
+                                    <type>zip</type>
+                                    <outputDirectory>target/dependencies/win</outputDirectory>
+                                </artifactItem>
+                                <artifactItem>
+                                    <groupId>org.apache.servicemix.nmr</groupId>
+                                    <artifactId>apache-servicemix-nmr</artifactId>
+                                    <type>zip</type>
+                                    <outputDirectory>target/dependencies/win</outputDirectory>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>attach-artifacts</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>attach-artifact</goal>
+                        </goals>
+                        <configuration>
+                            <artifacts>
+                                <artifact>
+                                    <file>target/classes/features.xml</file>
+                                    <type>xml </type>
+                                    <classifier>features</classifier>
+                                </artifact>
+                            </artifacts>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <version>${maven-assembly-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>unix-bin</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <configuration>
+                            <descriptors>
+                                <descriptor>src/main/descriptors/unix-bin.xml</descriptor>
+                            </descriptors>
+                            <finalName>${project.artifactId}-${project.version}</finalName>
+                            <tarLongFileMode>gnu</tarLongFileMode>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>windows-bin</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <configuration>
+                            <descriptors>
+                                <descriptor>src/main/descriptors/windows-bin.xml</descriptor>
+                            </descriptors>
+                            <finalName>${project.artifactId}-${project.version}</finalName>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>unix-src</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <configuration>
+                            <descriptors>
+                                <descriptor>src/main/descriptors/unix-src.xml</descriptor>
+                            </descriptors>
+                            <tarLongFileMode>gnu</tarLongFileMode>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>windows-src</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <configuration>
+                            <descriptors>
+                                <descriptor>src/main/descriptors/windows-src.xml</descriptor>
+                            </descriptors>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>assembly-src</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-assembly-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>unix-src</id>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>attached</goal>
+                                </goals>
+                                <configuration>
+                                    <descriptors>
+                                        <descriptor>src/main/descriptors/unix-src.xml</descriptor>
+                                    </descriptors>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>windows-src</id>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>attached</goal>
+                                </goals>
+                                <configuration>
+                                    <descriptors>
+                                        <descriptor>src/main/descriptors/windows-src.xml</descriptor>
+                                    </descriptors>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
+
diff --git a/trunk/assembly/src/main/appended-resources/META-INF/LICENSE.vm b/trunk/assembly/src/main/appended-resources/META-INF/LICENSE.vm
new file mode 100644
index 0000000..5c6b59b
--- /dev/null
+++ b/trunk/assembly/src/main/appended-resources/META-INF/LICENSE.vm
@@ -0,0 +1,39 @@
+##
+## 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.
+##
+## $Date: 2008-03-09 23:17:06 -0700 (Sun, 09 Mar 2008) $ $Rev: 635446 $
+##
+
+========================================================================
+
+Apache ServiceMix includes a number of components and libraries with 
+separate copyright notices and license terms. Your use of those 
+components are subject to the terms and conditions of the following 
+licenses. 
+
+#set ( $apacheTxt = "The Apache Software License, Version 2.0" )
+#foreach ( $project in $projects )
+#foreach ( $license in $project.licenses)
+#if ( ! ($apacheTxt == $license.name) ) 
+
+$project.name #if ($project.url)($project.url)#end $project.artifact
+    License: $license.name #if ($license.url) ($license.url)#end
+
+#end
+#end
+#end
diff --git a/trunk/assembly/src/main/appended-resources/META-INF/NOTICE b/trunk/assembly/src/main/appended-resources/META-INF/NOTICE
new file mode 100644
index 0000000..1c830e3
--- /dev/null
+++ b/trunk/assembly/src/main/appended-resources/META-INF/NOTICE
@@ -0,0 +1,35 @@
+This product also includes schemas and specification developed by:
+      - the W3C consortium (http://www.w3c.org)
+      (http://www.w3.org/XML/1998/namespace)
+      
+This product also includes WS-* schemas developed by International
+   Business Machines Corporation, Microsoft Corporation, BEA Systems, 
+   TIBCO Software, SAP AG, Sonic Software, and VeriSign
+   (http://schemas.xmlsoap.org/wsdl/2003-02-11.xsd)
+   (http://schemas.xmlsoap.org/ws/2004/08/addressing/)
+   (http://schemas.xmlsoap.org/wsdl/http)
+   (http://schemas.xmlsoap.org/ws/2005/02/rm/wsrm.xsd)
+   (http://www.w3.org/2005/08/addressing/ws-addr.xsd)
+
+This product also includes MTOSI wsdl and schemas developed by the
+TeleManagement Forum (http://www.tmforum.org/browse.aspx). The original
+MTOSI wsdl and schemas can be download from
+(http://sourceforge.net/projects/mtosi-ri)
+
+Java classes (source and binary) under org.apache.cxf.jaxws.javaee
+are generated from schema available here:
+   (http://java.sun.com/xml/ns/javaee/javaee_5.xsd)
+
+Portions of the included XmlSchema library are Copyright 2006 International Business Machines Corp.
+
+Additional copyright notices and license terms applicable are
+present in the licenses directory of this distribution.
+
+This product includes Java classes originally released under the Common 
+Development and Distribution License (CDDL) and relicenced here under the
+Apache Software License. These include:
+  Java Activation API (javax.activation.*)
+  Java Persistence API (javax.persistence.*)
+  Java API for RESTful Web Services (javax.xml.rs.*)
+Any additional rights under the Apache License are offered by this project
+alone, and not by the Initial Developer or Contributor. 
diff --git a/trunk/assembly/src/main/descriptors/unix-bin.xml b/trunk/assembly/src/main/descriptors/unix-bin.xml
new file mode 100644
index 0000000..72480c8
--- /dev/null
+++ b/trunk/assembly/src/main/descriptors/unix-bin.xml
@@ -0,0 +1,443 @@
+<?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.
+-->
+<assembly>
+    <id></id> <!-- intentionally left blank -> http://jira.codehaus.org/browse/MASSEMBLY-301 -->
+    <formats>
+        <format>tar.gz</format>
+    </formats>
+    <fileSets>
+
+        <!-- Expanded ServiceMix Runtime -->
+        <fileSet>
+            <directory>target/dependencies/unix/apache-karaf-${karaf.version}</directory>
+            <outputDirectory>/</outputDirectory>
+            <excludes>
+              <exclude>**/demos/**</exclude>
+              <exclude>bin/**</exclude>
+              <exclude>etc/system.properties</exclude>
+              <exclude>etc/org.apache.karaf.features.cfg</exclude>
+              <exclude>etc/org.ops4j.pax.logging.cfg</exclude>
+              <exclude>etc/users.properties</exclude>
+              <exclude>etc/custom.properties</exclude>
+              <exclude>etc/jre.properties</exclude>
+              <exclude>LICENSE</exclude>
+              <exclude>NOTICE</exclude>
+              <exclude>README</exclude>
+              <exclude>RELEASE-NOTES</exclude>
+              <exclude>karaf-manual*</exclude>
+            </excludes>
+        </fileSet>
+
+        <!-- Copy over bin/servicemix separately to get the correct file mode -->
+        <fileSet>
+            <directory>target/dependencies/unix/apache-karaf-${karaf.version}</directory>
+            <outputDirectory>/</outputDirectory>
+            <includes>
+              <include>bin/admin</include>
+              <include>bin/karaf</include>  <!-- we need this one in here for admin:create'd instances to work -->
+              <include>bin/start</include>
+              <include>bin/stop</include>
+            </includes>
+            <fileMode>0755</fileMode>
+        </fileSet>
+
+        <!-- Copy over karaf demo to examples folder -->
+        <fileSet>
+            <directory>target/dependencies/unix/apache-karaf-${karaf.version}/demos</directory>
+            <outputDirectory>/examples/karaf-demos</outputDirectory>
+            <lineEnding>unix</lineEnding>
+            <includes>
+              <include>pom.xml</include>
+              <include>**/web/**</include>
+            </includes>
+        </fileSet>
+       
+       <!-- Copy over ant files -->
+       <fileSet>
+            <directory>target/dependencies/unix/apache-servicemix-nmr-${servicemix.nmr.version}/ant</directory>
+            <outputDirectory>/ant</outputDirectory>
+            <lineEnding>unix</lineEnding>
+       </fileSet>
+
+       <!-- Copy over nmr examples files -->
+       <fileSet>
+            <directory>target/dependencies/unix/apache-servicemix-nmr-${servicemix.nmr.version}/examples</directory>
+            <outputDirectory>/examples/</outputDirectory>
+            <excludes>
+                <exclude>pom.xml</exclude>
+                <exclude>**/itests/**</exclude>
+                <exclude>**/target/**</exclude>
+                <exclude>**/.classpath</exclude>
+                <exclude>**/.project</exclude>
+                <exclude>**/.settings/**</exclude>
+            </excludes>
+            <lineEnding>unix</lineEnding>
+       </fileSet>
+
+        <!-- Copy license and other files from root -->
+        <fileSet>
+            <directory>${basedir}/..</directory>
+            <outputDirectory>/</outputDirectory>
+            <includes>
+                <include>README</include>
+                <include>RELEASE*</include>
+            </includes>
+            <lineEnding>unix</lineEnding>
+            <fileMode>0644</fileMode>
+        </fileSet>
+
+        <!-- Copy over jar files -->
+        <fileSet>
+            <directory>target/dependencies</directory>
+            <includes>
+                <include>servicemix-version.jar</include>
+            </includes>
+            <outputDirectory>/lib/</outputDirectory>
+        </fileSet>
+
+        <!-- Copy over everything that needs to get unix line endings -->
+        <fileSet>
+            <directory>src/main/distribution/text</directory>
+            <outputDirectory>/</outputDirectory>
+            <lineEnding>unix</lineEnding>
+            <fileMode>0644</fileMode>
+        </fileSet>        
+        <fileSet>
+            <directory>target/classes/etc</directory>
+            <outputDirectory>/etc/</outputDirectory>
+            <lineEnding>unix</lineEnding>
+            <fileMode>0644</fileMode>
+        </fileSet>
+       <fileSet>
+            <directory>src/main/distribution/unix-shell</directory>
+            <outputDirectory>/</outputDirectory>
+            <lineEnding>unix</lineEnding>
+            <fileMode>0755</fileMode>
+        </fileSet>
+
+        <!-- Copy over the examples -->
+        <fileSet>
+            <directory>${basedir}/../examples</directory>
+            <outputDirectory>/examples/</outputDirectory>
+            <lineEnding>unix</lineEnding>
+            <excludes>
+                <exclude>pom.xml</exclude>
+                <!--we need add filtered README.txt, so exclude the raw one here-->
+                <exclude>**/README.txt</exclude>
+                <exclude>**/itests/**</exclude>
+                <exclude>**/target/**</exclude>
+                <exclude>**/.classpath</exclude>
+                <exclude>**/.project</exclude>
+                <exclude>**/.settings/**</exclude>
+                <exclude>**/wsdl-first/**</exclude>
+                <exclude>**/loan-broker-bpel/**</exclude>
+            </excludes>
+        </fileSet>
+        
+        <fileSet>
+          <directory>target/features-repo</directory>
+          <outputDirectory>system</outputDirectory>
+        </fileSet>
+
+    </fileSets>
+
+    <files>
+        <file>
+            <source>${basedir}/target/dependencies/unix/apache-karaf-${karaf.version}/bin/karaf</source>
+            <outputDirectory>/bin/</outputDirectory>
+            <destName>servicemix</destName>
+            <fileMode>0755</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/target/dependencies/servicemix-version.jar</source>
+            <outputDirectory>/lib/</outputDirectory>
+            <fileMode>0644</fileMode>
+        </file>
+        <file>
+            <source>${basedir}/target/classes/features.xml</source>
+            <outputDirectory>system/org/apache/servicemix/${artifactId}/${version}</outputDirectory>
+            <destName>${artifactId}-${version}-features.xml</destName>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/target/classes/activemq-features.xml</source>
+            <outputDirectory>system/org/apache/activemq/activemq-karaf/${activemq.version}</outputDirectory>
+            <destName>activemq-karaf-${activemq.version}-features.xml</destName>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/target/classes/camel-features.xml</source>
+            <outputDirectory>system/org/apache/camel/karaf/apache-camel/${camel.version}</outputDirectory>
+            <destName>apache-camel-${camel.version}-features.xml</destName>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+
+        <file>
+            <source>${basedir}/target/maven-shared-archive-resources/META-INF/LICENSE</source>
+            <outputDirectory>/</outputDirectory>
+            <destName>LICENSE</destName>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/target/maven-shared-archive-resources/META-INF/NOTICE</source>
+            <outputDirectory>/</outputDirectory>
+            <destName>NOTICE</destName>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+
+        <!--filtering README.txt-->
+        <file>
+            <source>${basedir}/../examples/README.txt</source>
+            <outputDirectory>/examples/</outputDirectory>
+            <filtered>true</filtered>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/../examples/bridge/README.txt</source>
+            <outputDirectory>/examples/bridge</outputDirectory>
+            <filtered>true</filtered>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/../examples/cxf-ws-addressing/README.txt</source>
+            <outputDirectory>/examples/cxf-ws-addressing</outputDirectory>
+            <filtered>true</filtered>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/../examples/cxf-jaxrs/README.txt</source>
+            <outputDirectory>/examples/cxf-jaxrs</outputDirectory>
+            <filtered>true</filtered>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/../examples/cxf-wsdl-first-osgi-package/README.txt</source>
+            <outputDirectory>/examples/cxf-wsdl-first-osgi-package</outputDirectory>
+            <filtered>true</filtered>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/../examples/bridge-camel/README.txt</source>
+            <outputDirectory>/examples/bridge-camel</outputDirectory>
+            <filtered>true</filtered>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/../examples/camel/README.txt</source>
+            <outputDirectory>/examples/camel</outputDirectory>
+            <filtered>true</filtered>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/../examples/camel-blueprint/README.txt</source>
+            <outputDirectory>/examples/camel-blueprint</outputDirectory>
+            <filtered>true</filtered>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/../examples/cxf-wsdl-first/README.txt</source>
+            <outputDirectory>/examples/cxf-wsdl-first</outputDirectory>
+            <filtered>true</filtered>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/../examples/camel-osgi/README.txt</source>
+            <outputDirectory>/examples/camel-osgi</outputDirectory>
+            <filtered>true</filtered>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/../examples/camel-nmr/README.txt</source>
+            <outputDirectory>/examples/camel-nmr</outputDirectory>
+            <filtered>true</filtered>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+          <source>${basedir}/../examples/camel-nmr-blueprint/README.txt</source>
+          <outputDirectory>/examples/camel-nmr-blueprint</outputDirectory>
+          <filtered>true</filtered>
+          <fileMode>0644</fileMode>
+          <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/../examples/cxf-nmr/README.txt</source>
+            <outputDirectory>/examples/cxf-nmr</outputDirectory>               
+            <filtered>true</filtered>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/../examples/cxf-osgi/README.txt</source>
+            <outputDirectory>/examples/cxf-osgi</outputDirectory>
+            <filtered>true</filtered>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/../examples/cxf-ws-security-osgi/README.txt</source>
+            <outputDirectory>/examples/cxf-ws-security-osgi</outputDirectory>
+            <filtered>true</filtered>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/../examples/cxf-ws-rm/README.txt</source>
+            <outputDirectory>/examples/cxf-ws-rm</outputDirectory>
+            <filtered>true</filtered>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+
+        <file>
+            <source>${basedir}/../examples/cxf-camel-nmr/README.txt</source>
+            <outputDirectory>/examples/cxf-camel-nmr</outputDirectory>
+            <filtered>true</filtered>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/../examples/simple/README.txt</source>
+            <outputDirectory>/examples/simple</outputDirectory>
+            <filtered>true</filtered>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/target/classes/pom.xml</source>
+            <outputDirectory>/examples/</outputDirectory>
+            <filtered>true</filtered>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+    </files>
+
+    <dependencySets>
+        <dependencySet>
+            <outputDirectory>/lib/endorsed</outputDirectory>
+            <includes>
+                <include>com.sun.xml.parsers:jaxp-ri</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
+            <outputDirectory>/system</outputDirectory>
+            <outputFileNameMapping>org/apache/servicemix/nmr/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+            <unpack>false</unpack>
+            <scope>runtime</scope>
+            <includes>
+                <include>org.apache.servicemix.nmr:apache-servicemix-nmr:xml:features</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
+            <outputDirectory>/system</outputDirectory>
+            <outputFileNameMapping>org/apache/ode/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+            <unpack>false</unpack>
+            <scope>runtime</scope>
+            <includes>
+                <include>org.apache.ode:ode-jbi-karaf:xml:features</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
+            <outputDirectory>/system</outputDirectory>
+            <unpack>false</unpack>
+            <useProjectArtifact>false</useProjectArtifact>
+            <outputFileNameMapping>org/apache/felix/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+            <includes>
+                <include>org.apache.felix:org.osgi.compendium</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
+            <outputDirectory>/system</outputDirectory>
+            <unpack>false</unpack>
+            <useProjectArtifact>false</useProjectArtifact>
+            <outputFileNameMapping>org/springframework/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+            <includes>
+                <include>org.springframework:spring-aop</include>
+                <include>org.springframework:spring-beans</include>
+                <include>org.springframework:spring-context</include>
+                <include>org.springframework:spring-core</include>
+                <include>org.springframework:spring-tx</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
+            <outputDirectory>/system</outputDirectory>
+            <unpack>false</unpack>
+            <useProjectArtifact>false</useProjectArtifact>
+            <outputFileNameMapping>org/springframework/osgi/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+            <includes>
+                <include>org.springframework.osgi:spring-osgi-core</include>
+                <include>org.springframework.osgi:spring-osgi-extender</include>
+                <include>org.springframework.osgi:spring-osgi-io</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
+            <outputDirectory>/system</outputDirectory>
+            <unpack>false</unpack>
+            <useProjectArtifact>false</useProjectArtifact>
+            <outputFileNameMapping>org/apache/geronimo/specs/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+            <includes>
+                <include>org.apache.geronimo.specs:geronimo-servlet_3.0_spec</include>
+                <include>org.apache.geronimo.specs:geronimo-annotation_1.0_spec</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
+            <outputDirectory>/system</outputDirectory>
+            <unpack>false</unpack>
+            <useProjectArtifact>false</useProjectArtifact>
+            <outputFileNameMapping>org/apache/servicemix/bundles/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+            <includes>
+                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.aopalliance</include>
+                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.cglib</include>
+                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.jaxp-ri</include>
+                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.oro</include>
+                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.commons-jexl</include>
+                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.commons-vfs</include>
+                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.commons-codec</include>
+                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.commons-httpclient</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
+            <outputDirectory>/system</outputDirectory>
+            <unpack>false</unpack>
+            <useProjectArtifact>false</useProjectArtifact>
+            <outputFileNameMapping>org/apache/servicemix/specs/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+            <includes>
+                <include>org.apache.servicemix.specs:org.apache.servicemix.specs.jaxp-api-1.4</include>
+                <include>org.apache.servicemix.specs:org.apache.servicemix.specs.stax-api-1.0</include>
+            </includes>
+        </dependencySet>
+
+    </dependencySets>
+
+</assembly>
diff --git a/trunk/assembly/src/main/descriptors/unix-src.xml b/trunk/assembly/src/main/descriptors/unix-src.xml
new file mode 100644
index 0000000..6195ad7
--- /dev/null
+++ b/trunk/assembly/src/main/descriptors/unix-src.xml
@@ -0,0 +1,125 @@
+<?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.
+-->
+<assembly>
+    <id>src</id>
+    <formats>
+        <format>tar.gz</format>
+    </formats>
+    <fileSets>
+        <!-- Copy license and other files from root -->
+        <fileSet>
+            <directory>${basedir}/..</directory>
+            <outputDirectory>/</outputDirectory>
+            <includes>
+                <include>BUILDING.txt</include>
+                <include>README.txt</include>
+                <include>RELEASE*.txt</include>
+            </includes>
+            <lineEnding>unix</lineEnding>
+        </fileSet>
+
+        <!-- Binary Files -->
+        <fileSet>
+            <directory>${basedir}/..</directory>
+            <outputDirectory>src</outputDirectory>
+            <includes>
+                <include>**/*.jpeg</include>
+                <include>**/*.jpg</include>
+                <include>**/*.gif</include>
+                <include>**/*.png</include>
+                <include>**/*.exe</include>
+                <include>**/*.dll</include>
+                <include>**/*.jar</include>
+                <include>**/*.so</include>
+                <include>**/*.ks</include>
+                <include>**/*.ts</include>
+                <include>**/*.keystore</include>
+                <include>**/*.bin</include>
+                <include>**/*.jnilib</include>
+                <include>**/*.cert</include>
+                <include>**/*.jks</include>
+                <include>apache-servicemix/src/main/release/bin/*/wrapper</include>
+            </includes>
+            <excludes>
+                <exclude>**/eclipse-classes/**</exclude>
+                <exclude>**/target/**</exclude>
+            </excludes>
+        </fileSet>
+
+        <!-- Text Files -->
+        <fileSet>
+            <directory>${basedir}/..</directory>
+            <outputDirectory>src</outputDirectory>
+            <includes>
+                <include>**/*</include>
+            </includes>
+            <excludes>
+                <exclude>**/*.jpeg</exclude>
+                <exclude>**/*.jpg</exclude>
+                <exclude>**/*.gif</exclude>
+                <exclude>**/*.png</exclude>
+                <exclude>**/*.exe</exclude>
+                <exclude>**/*.dll</exclude>
+                <exclude>**/*.jar</exclude>
+                <exclude>**/*.so</exclude>
+                <exclude>**/*.ks</exclude>
+                <exclude>**/*.ts</exclude>
+                <exclude>**/*.keystore</exclude>
+                <exclude>**/*.bin</exclude>
+                <exclude>**/*.jnilib</exclude>
+                <exclude>**/*.cert</exclude>
+                <exclude>apache-servicemix/src/main/release/bin/*/wrapper</exclude>
+                <exclude>**/target/**</exclude>
+                <exclude>**/build/**</exclude>
+                <exclude>activemq-data/**</exclude>
+                <exclude>*/activemq-data/**</exclude>
+                <exclude>**/eclipse-classes/**</exclude>
+                <exclude>**/.*</exclude>
+                <exclude>**/.*/**</exclude>
+
+                <exclude>**/surefire*</exclude>
+                <exclude>**/svn-commit*</exclude>
+
+                <exclude>**/*.iml</exclude>
+                <exclude>**/*.ipr</exclude>
+                <exclude>**/*.iws</exclude>
+                <exclude>**/*.jks</exclude>
+
+                <exclude>**/cobertura.ser</exclude>
+
+            </excludes>
+            <lineEnding>unix</lineEnding>
+        </fileSet>
+    </fileSets>
+    <files>
+        <file>
+            <source>${basedir}/target/maven-shared-archive-resources/META-INF/LICENSE</source>
+            <outputDirectory>/</outputDirectory>
+            <destName>LICENSE.txt</destName>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/target/maven-shared-archive-resources/META-INF/NOTICE</source>
+            <outputDirectory>/</outputDirectory>
+            <destName>NOTICE.txt</destName>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+    </files>
+</assembly>
diff --git a/trunk/assembly/src/main/descriptors/windows-bin.xml b/trunk/assembly/src/main/descriptors/windows-bin.xml
new file mode 100644
index 0000000..a818abc
--- /dev/null
+++ b/trunk/assembly/src/main/descriptors/windows-bin.xml
@@ -0,0 +1,434 @@
+<?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.
+-->
+<assembly>
+    <id></id> <!-- intentionally left blank -> http://jira.codehaus.org/browse/MASSEMBLY-301 -->
+    <formats>
+        <format>zip</format>
+    </formats>
+    <fileSets>
+
+      <!-- Expanded ServiceMix Runtime -->
+      <fileSet>
+          <directory>target/dependencies/win/apache-karaf-${karaf.version}</directory>
+          <outputDirectory>/</outputDirectory>
+          <excludes>
+             <exclude>**/demos/**</exclude>
+             <exclude>etc/system.properties</exclude>
+             <exclude>etc/org.apache.karaf.features.cfg</exclude>
+             <exclude>etc/org.ops4j.pax.logging.cfg</exclude>
+             <exclude>etc/users.properties</exclude>
+             <exclude>etc/custom.properties</exclude>
+             <exclude>etc/jre.properties</exclude>
+             <exclude>LICENSE</exclude>
+             <exclude>NOTICE</exclude>
+             <exclude>README</exclude>
+             <exclude>RELEASE-NOTES</exclude>
+             <exclude>karaf-manual*</exclude>
+          </excludes>
+      </fileSet>
+
+      <!-- Copy over kernel demo to examples folder -->
+      <fileSet>
+          <directory>target/dependencies/win/apache-karaf-${karaf.version}/demos</directory>
+          <outputDirectory>/examples/karaf-demos</outputDirectory>
+          <lineEnding>dos</lineEnding>
+          <includes>
+            <include>pom.xml</include>
+            <include>**/web/**</include>
+          </includes>
+      </fileSet>
+      
+      <!-- Copy over ant files -->
+       <fileSet>
+            <directory>target/dependencies/win/apache-servicemix-nmr-${servicemix.nmr.version}/ant</directory>
+            <outputDirectory>/ant</outputDirectory>
+            <lineEnding>dos</lineEnding>
+       </fileSet>
+
+      <!-- Copy over nmr examples files -->
+      <fileSet>
+           <directory>target/dependencies/win/apache-servicemix-nmr-${servicemix.nmr.version}/examples</directory>
+           <outputDirectory>/examples/</outputDirectory>
+           <excludes>
+               <exclude>pom.xml</exclude>
+               <exclude>**/itests/**</exclude>
+               <exclude>**/target/**</exclude>
+               <exclude>**/.classpath</exclude>
+               <exclude>**/.project</exclude>
+               <exclude>**/.settings/**</exclude>
+           </excludes>
+           <lineEnding>dos</lineEnding>
+      </fileSet>
+
+      <!-- Copy license and other files from root -->
+      <fileSet>
+          <directory>${basedir}/..</directory>
+          <outputDirectory>/</outputDirectory>
+          <includes>
+              <include>README</include>
+              <include>RELEASE*</include>
+          </includes>
+          <lineEnding>dos</lineEnding>
+          <fileMode>0644</fileMode>
+      </fileSet>
+
+      <!-- Copy over everything that needs to get dos line endings -->
+      <fileSet>
+          <directory>src/main/distribution/text</directory>
+          <outputDirectory>/</outputDirectory>
+          <lineEnding>dos</lineEnding>
+          <fileMode>0644</fileMode>
+      </fileSet>        
+      <fileSet>
+          <directory>target/classes/etc</directory>
+          <outputDirectory>/etc/</outputDirectory>
+          <lineEnding>dos</lineEnding>
+          <fileMode>0644</fileMode>
+      </fileSet>
+
+      <!-- Copy over jar files -->
+      <fileSet>
+          <directory>target/dependencies</directory>
+          <includes>
+              <include>servicemix-version.jar</include>
+          </includes>
+          <outputDirectory>/lib/</outputDirectory>
+      </fileSet>
+
+      <!-- Copy over the examples -->
+      <fileSet>
+          <directory>${basedir}/../examples</directory>
+          <outputDirectory>/examples/</outputDirectory>
+          <lineEnding>dos</lineEnding>
+          <excludes>
+              <exclude>pom.xml</exclude>
+              <!--we need add filtered README.txt, so exclude the raw one here-->
+              <exclude>**/README.txt</exclude>
+              <exclude>**/itests/**</exclude>
+              <exclude>**/target/**</exclude>
+              <exclude>**/.classpath</exclude>
+              <exclude>**/.project</exclude>
+              <exclude>**/.settings/**</exclude>
+              <exclude>**/wsdl-first/**</exclude>
+              <exclude>**/loan-broker-bpel/**</exclude>
+          </excludes>
+      </fileSet>
+
+      <fileSet>
+        <directory>target/features-repo</directory>
+        <outputDirectory>system</outputDirectory>
+      </fileSet>
+      
+    </fileSets>
+
+    <files>
+        <file>
+            <source>${basedir}/target/dependencies/win/apache-karaf-${karaf.version}/bin/karaf.bat</source>
+            <outputDirectory>/bin/</outputDirectory>
+            <destName>servicemix.bat</destName>
+            <fileMode>0755</fileMode>
+            <lineEnding>dos</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/target/dependencies/servicemix-version.jar</source>
+            <outputDirectory>/lib/</outputDirectory>
+            <fileMode>0644</fileMode>
+        </file>
+        <file>
+            <source>${basedir}/target/classes/features.xml</source>
+            <outputDirectory>system/org/apache/servicemix/${artifactId}/${version}</outputDirectory>
+            <destName>${artifactId}-${version}-features.xml</destName>
+            <fileMode>0644</fileMode>
+            <lineEnding>dos</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/target/classes/activemq-features.xml</source>
+            <outputDirectory>system/org/apache/activemq/activemq-karaf/${activemq.version}</outputDirectory>
+            <destName>activemq-karaf-${activemq.version}-features.xml</destName>
+            <fileMode>0644</fileMode>
+            <lineEnding>dos</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/target/classes/camel-features.xml</source>
+            <outputDirectory>system/org/apache/camel/karaf/apache-camel/${camel.version}</outputDirectory>
+            <destName>apache-camel-${camel.version}-features.xml</destName>
+            <fileMode>0644</fileMode>
+            <lineEnding>dos</lineEnding>
+        </file>
+
+        <file>
+            <source>${basedir}/target/maven-shared-archive-resources/META-INF/LICENSE</source>
+            <outputDirectory>/</outputDirectory>
+            <destName>LICENSE</destName>
+            <fileMode>0644</fileMode>
+            <lineEnding>dos</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/target/maven-shared-archive-resources/META-INF/NOTICE</source>
+            <outputDirectory>/</outputDirectory>
+            <destName>NOTICE</destName>
+            <fileMode>0644</fileMode>
+            <lineEnding>dos</lineEnding>
+        </file>
+        
+        <!--filtering README.txt-->
+        <file>
+            <source>${basedir}/../examples/README.txt</source>
+            <outputDirectory>/examples/</outputDirectory>
+            <filtered>true</filtered>
+            <fileMode>0644</fileMode>
+            <lineEnding>dos</lineEnding>
+        </file>
+
+        <file>
+              <source>${basedir}/../examples/bridge/README.txt</source>
+              <outputDirectory>/examples/bridge</outputDirectory>
+              <filtered>true</filtered>
+              <fileMode>0644</fileMode>
+              <lineEnding>dos</lineEnding>
+        </file>
+        <file>
+              <source>${basedir}/../examples/cxf-ws-addressing/README.txt</source>
+              <outputDirectory>/examples/cxf-ws-addressing</outputDirectory>
+              <filtered>true</filtered>
+              <fileMode>0644</fileMode>
+              <lineEnding>dos</lineEnding>
+        </file>
+        <file>
+              <source>${basedir}/../examples/cxf-jaxrs/README.txt</source>
+              <outputDirectory>/examples/cxf-jaxrs</outputDirectory>
+              <filtered>true</filtered>
+              <fileMode>0644</fileMode>
+              <lineEnding>dos</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/../examples/cxf-wsdl-first-osgi-package/README.txt</source>
+            <outputDirectory>/examples/cxf-wsdl-first-osgi-package</outputDirectory>
+            <filtered>true</filtered>
+            <fileMode>0644</fileMode>
+            <lineEnding>dos</lineEnding>
+        </file>
+        <file>
+              <source>${basedir}/../examples/bridge-camel/README.txt</source>
+              <outputDirectory>/examples/bridge-camel</outputDirectory>
+              <filtered>true</filtered>
+              <fileMode>0644</fileMode>
+              <lineEnding>dos</lineEnding>
+        </file>
+        <file>
+              <source>${basedir}/../examples/camel/README.txt</source>
+              <outputDirectory>/examples/camel</outputDirectory>
+              <filtered>true</filtered>
+              <fileMode>0644</fileMode>
+              <lineEnding>dos</lineEnding>
+        </file>
+        <file>
+              <source>${basedir}/../examples/camel-blueprint/README.txt</source>
+              <outputDirectory>/examples/camel-blueprint</outputDirectory>
+              <filtered>true</filtered>
+              <fileMode>0644</fileMode>
+              <lineEnding>dos</lineEnding>
+        </file>
+        <file>
+              <source>${basedir}/../examples/cxf-wsdl-first/README.txt</source>
+              <outputDirectory>/examples/cxf-wsdl-first</outputDirectory>
+              <filtered>true</filtered>
+              <fileMode>0644</fileMode>
+              <lineEnding>dos</lineEnding>
+        </file>
+        <file>
+              <source>${basedir}/../examples/camel-osgi/README.txt</source>
+              <outputDirectory>/examples/camel-osgi</outputDirectory>
+              <filtered>true</filtered>
+              <fileMode>0644</fileMode>
+              <lineEnding>dos</lineEnding>
+            </file>
+            <file>
+              <source>${basedir}/../examples/camel-nmr/README.txt</source>
+              <outputDirectory>/examples/camel-nmr</outputDirectory>
+              <filtered>true</filtered>
+              <fileMode>0644</fileMode>
+              <lineEnding>dos</lineEnding>
+            </file>
+        <file>
+          <source>${basedir}/../examples/camel-nmr-blueprint/README.txt</source>
+          <outputDirectory>/examples/camel-nmr-blueprint</outputDirectory>
+          <filtered>true</filtered>
+          <fileMode>0644</fileMode>
+          <lineEnding>dos</lineEnding>
+        </file>
+            <file>
+              <source>${basedir}/../examples/cxf-nmr/README.txt</source>
+              <outputDirectory>/examples/cxf-nmr</outputDirectory>
+              <filtered>true</filtered>
+              <fileMode>0644</fileMode>
+              <lineEnding>dos</lineEnding>
+            </file>
+            <file>
+              <source>${basedir}/../examples/cxf-osgi/README.txt</source>
+              <outputDirectory>/examples/cxf-osgi</outputDirectory>
+              <filtered>true</filtered>
+              <fileMode>0644</fileMode>
+              <lineEnding>dos</lineEnding>
+            </file>
+            <file>
+              <source>${basedir}/../examples/cxf-ws-security-osgi/README.txt</source>
+              <outputDirectory>/examples/cxf-ws-security-osgi</outputDirectory>
+              <filtered>true</filtered>
+              <fileMode>0644</fileMode>
+              <lineEnding>dos</lineEnding>
+            </file>
+            <file>
+              <source>${basedir}/../examples/cxf-ws-rm/README.txt</source>
+              <outputDirectory>/examples/cxf-ws-rm</outputDirectory>
+              <filtered>true</filtered>
+              <fileMode>0644</fileMode>
+              <lineEnding>dos</lineEnding>
+            </file>
+
+            <file>
+              <source>${basedir}/../examples/cxf-camel-nmr/README.txt</source>
+              <outputDirectory>/examples/cxf-camel-nmr</outputDirectory>
+              <filtered>true</filtered>
+              <fileMode>0644</fileMode>
+              <lineEnding>dos</lineEnding>
+            </file>
+            <file>
+              <source>${basedir}/../examples/simple/README.txt</source>
+              <outputDirectory>/examples/simple</outputDirectory>
+              <filtered>true</filtered>
+              <fileMode>0644</fileMode>
+              <lineEnding>dos</lineEnding>
+            </file>
+            <file>
+              <source>${basedir}/target/classes/pom.xml</source>
+              <outputDirectory>/examples/</outputDirectory>
+              <filtered>true</filtered>
+              <fileMode>0644</fileMode>
+              <lineEnding>dos</lineEnding>
+            </file>
+
+    </files>
+
+    <dependencySets>
+        <dependencySet>
+            <outputDirectory>/lib/endorsed</outputDirectory>
+            <includes>
+                <include>com.sun.xml.parsers:jaxp-ri</include>
+            </includes>
+        </dependencySet>        
+        <dependencySet>
+            <outputDirectory>/system</outputDirectory>
+            <outputFileNameMapping>org/apache/servicemix/nmr/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+            <unpack>false</unpack>
+            <scope>runtime</scope>
+            <includes>
+                <include>org.apache.servicemix.nmr:apache-servicemix-nmr:xml:features</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
+            <outputDirectory>/system</outputDirectory>
+            <outputFileNameMapping>org/apache/ode/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+            <unpack>false</unpack>
+            <scope>runtime</scope>
+            <includes>
+                <include>org.apache.ode:ode-jbi-karaf:xml:features</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
+            <outputDirectory>/system</outputDirectory>
+            <outputFileNameMapping>org/apache/camel/karaf/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+            <unpack>false</unpack>
+            <scope>runtime</scope>
+            <includes>
+                <include>org.apache.camel.karaf:apache-camel:xml:features</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
+            <outputDirectory>/system</outputDirectory>
+            <unpack>false</unpack>
+            <useProjectArtifact>false</useProjectArtifact>
+            <outputFileNameMapping>org/apache/felix/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+            <includes>
+                <include>org.apache.felix:org.osgi.compendium</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
+            <outputDirectory>/system</outputDirectory>
+            <unpack>false</unpack>
+            <useProjectArtifact>false</useProjectArtifact>
+            <outputFileNameMapping>org/springframework/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+            <includes>
+                <include>org.springframework:spring-aop</include>
+                <include>org.springframework:spring-beans</include>
+                <include>org.springframework:spring-context</include>
+                <include>org.springframework:spring-core</include>
+                <include>org.springframework:spring-tx</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
+            <outputDirectory>/system</outputDirectory>
+            <unpack>false</unpack>
+            <useProjectArtifact>false</useProjectArtifact>
+            <outputFileNameMapping>org/springframework/osgi/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+            <includes>
+                <include>org.springframework.osgi:spring-osgi-core</include>
+                <include>org.springframework.osgi:spring-osgi-extender</include>
+                <include>org.springframework.osgi:spring-osgi-io</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
+            <outputDirectory>/system</outputDirectory>
+            <unpack>false</unpack>
+            <useProjectArtifact>false</useProjectArtifact>
+            <outputFileNameMapping>org/apache/geronimo/specs/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+            <includes>
+                <include>org.apache.geronimo.specs:geronimo-servlet_3.0_spec</include>
+                <include>org.apache.geronimo.specs:geronimo-annotation_1.0_spec</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
+            <outputDirectory>/system</outputDirectory>
+            <unpack>false</unpack>
+            <useProjectArtifact>false</useProjectArtifact>
+            <outputFileNameMapping>org/apache/servicemix/bundles/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+            <includes>
+                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.aopalliance</include>
+                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.cglib</include>
+                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.jaxp-ri</include>
+                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.oro</include>
+                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.commons-jexl</include>
+                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.commons-vfs</include>
+                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.commons-codec</include>
+                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.commons-httpclient</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
+            <outputDirectory>/system</outputDirectory>
+            <unpack>false</unpack>
+            <useProjectArtifact>false</useProjectArtifact>
+            <outputFileNameMapping>org/apache/servicemix/specs/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+            <includes>
+                <include>org.apache.servicemix.specs:org.apache.servicemix.specs.jaxp-api-1.4</include>
+                <include>org.apache.servicemix.specs:org.apache.servicemix.specs.stax-api-1.0</include>
+            </includes>
+        </dependencySet>
+
+    </dependencySets>
+
+</assembly>
diff --git a/trunk/assembly/src/main/descriptors/windows-src.xml b/trunk/assembly/src/main/descriptors/windows-src.xml
new file mode 100644
index 0000000..6cc69e1
--- /dev/null
+++ b/trunk/assembly/src/main/descriptors/windows-src.xml
@@ -0,0 +1,125 @@
+<?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.
+-->
+<assembly>
+    <id>src</id>
+    <formats>
+        <format>zip</format>
+    </formats>
+    <fileSets>
+        <!-- Copy license and other files from root -->
+        <fileSet>
+            <directory>${basedir}/..</directory>
+            <outputDirectory>/</outputDirectory>
+            <includes>
+                <include>BUILDING.txt</include>
+                <include>README.txt</include>
+                <include>RELEASE*.txt</include>
+            </includes>
+            <lineEnding>dos</lineEnding>
+        </fileSet>
+
+        <!-- Binary Files -->
+        <fileSet>
+            <directory>${basedir}/..</directory>
+            <outputDirectory>src</outputDirectory>
+            <includes>
+                <include>**/*.jpeg</include>
+                <include>**/*.jpg</include>
+                <include>**/*.gif</include>
+                <include>**/*.png</include>
+                <include>**/*.exe</include>
+                <include>**/*.dll</include>
+                <include>**/*.jar</include>
+                <include>**/*.so</include>
+                <include>**/*.ks</include>
+                <include>**/*.ts</include>
+                <include>**/*.keystore</include>
+                <include>**/*.bin</include>
+                <include>**/*.jnilib</include>
+                <include>**/*.cert</include>
+                <include>**/*.jks</include>
+                <include>apache-servicemix/src/main/release/bin/*/wrapper</include>
+            </includes>
+            <excludes>
+                <exclude>**/eclipse-classes/**</exclude>
+                <exclude>**/target/**</exclude>
+            </excludes>
+        </fileSet>
+
+        <!-- Text Files -->
+        <fileSet>
+            <directory>${basedir}/..</directory>
+            <outputDirectory>src</outputDirectory>
+            <includes>
+                <include>**/*</include>
+            </includes>
+            <excludes>
+                <exclude>**/*.jpeg</exclude>
+                <exclude>**/*.jpg</exclude>
+                <exclude>**/*.gif</exclude>
+                <exclude>**/*.png</exclude>
+                <exclude>**/*.exe</exclude>
+                <exclude>**/*.dll</exclude>
+                <exclude>**/*.jar</exclude>
+                <exclude>**/*.so</exclude>
+                <exclude>**/*.ks</exclude>
+                <exclude>**/*.ts</exclude>
+                <exclude>**/*.keystore</exclude>
+                <exclude>**/*.bin</exclude>
+                <exclude>**/*.jnilib</exclude>
+                <exclude>**/*.cert</exclude>
+                <exclude>apache-servicemix/src/main/release/bin/*/wrapper</exclude>
+
+                <exclude>**/target/**</exclude>
+                <exclude>**/build/**</exclude>
+                <exclude>activemq-data/**</exclude>
+                <exclude>*/activemq-data/**</exclude>
+                <exclude>**/eclipse-classes/**</exclude>
+                <exclude>**/.*</exclude>
+                <exclude>**/.*/**</exclude>
+
+                <exclude>**/surefire*</exclude>
+                <exclude>**/svn-commit*</exclude>
+
+                <exclude>**/*.iml</exclude>
+                <exclude>**/*.ipr</exclude>
+                <exclude>**/*.iws</exclude>
+                <exclude>**/*.jks</exclude>
+                <exclude>**/cobertura.ser</exclude>
+
+            </excludes>
+            <lineEnding>dos</lineEnding>
+        </fileSet>
+    </fileSets>
+    <files>
+        <file>
+            <source>${basedir}/target/maven-shared-archive-resources/META-INF/LICENSE</source>
+            <outputDirectory>/</outputDirectory>
+            <destName>LICENSE.txt</destName>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+        <file>
+            <source>${basedir}/target/maven-shared-archive-resources/META-INF/NOTICE</source>
+            <outputDirectory>/</outputDirectory>
+            <destName>NOTICE.txt</destName>
+            <fileMode>0644</fileMode>
+            <lineEnding>unix</lineEnding>
+        </file>
+    </files>
+</assembly>
diff --git a/trunk/assembly/src/main/distribution/text/etc/activemq-broker.xml b/trunk/assembly/src/main/distribution/text/etc/activemq-broker.xml
new file mode 100644
index 0000000..c20115b
--- /dev/null
+++ b/trunk/assembly/src/main/distribution/text/etc/activemq-broker.xml
@@ -0,0 +1,131 @@
+<!--
+    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:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
+           xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0"
+           xmlns:amq="http://activemq.apache.org/schema/core">
+
+    <!-- Allows us to use system properties as variables in this configuration file -->
+    <ext:property-placeholder />
+
+    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="default" dataDirectory="${karaf.data}/activemq/default" useShutdownHook="false">
+
+       <!--
+            For better performances use VM cursor and small memory limit.
+            For more information, see:
+            
+            http://activemq.apache.org/message-cursors.html
+            
+            Also, if your producer is "hanging", it's probably due to producer flow control.
+            For more information, see:
+            http://activemq.apache.org/producer-flow-control.html
+        -->
+              
+        <destinationPolicy>
+            <policyMap>
+              <policyEntries>
+                <policyEntry topic=">" producerFlowControl="true" memoryLimit="1mb">
+                  <pendingSubscriberPolicy>
+                    <vmCursor />
+                  </pendingSubscriberPolicy>
+                </policyEntry>
+                <policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb">
+                  <!-- Use VM cursor for better latency
+                       For more information, see:
+                       
+                       http://activemq.apache.org/message-cursors.html
+                       
+                  <pendingQueuePolicy>
+                    <vmQueueCursor/>
+                  </pendingQueuePolicy>
+                  -->
+                </policyEntry>
+              </policyEntries>
+            </policyMap>
+        </destinationPolicy> 
+
+        <!-- Use the following to configure how ActiveMQ is exposed in JMX -->
+        <managementContext>
+            <managementContext createConnector="false"/>
+        </managementContext>
+
+        <!-- 
+            Configure message persistence for the broker. The default persistence
+            mechanism is the KahaDB store (identified by the kahaDB tag). 
+            For more information, see: 
+            
+            http://activemq.apache.org/persistence.html 
+        -->
+        <persistenceAdapter>
+            <kahaDB directory="${karaf.data}/activemq/default/kahadb"/>
+        </persistenceAdapter>
+
+       <!--
+            The systemUsage controls the maximum amount of space the broker will 
+            use before slowing down producers. For more information, see:
+            
+            http://activemq.apache.org/producer-flow-control.html
+             
+        <systemUsage>
+            <systemUsage>
+                <memoryUsage>
+                    <memoryUsage limit="20 mb"/>
+                </memoryUsage>
+                <storeUsage>
+                    <storeUsage limit="1 gb" name="foo"/>
+                </storeUsage>
+                <tempUsage>
+                    <tempUsage limit="100 mb"/>
+                </tempUsage>
+            </systemUsage>
+        </systemUsage>
+        -->
+
+        <!-- The transport connectors ActiveMQ will listen to -->
+        <transportConnectors>
+            <transportConnector name="openwire" uri="tcp://localhost:61616"/>
+            <transportConnector name="stomp" uri="stomp://localhost:61613"/>
+        </transportConnectors>
+
+    </broker>
+
+    <bean id="activemqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
+
+        <property name="brokerURL" value="tcp://localhost:61616" />
+    </bean>
+
+    <bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
+        <property name="maxConnections" value="8" />
+        <property name="connectionFactory" ref="activemqConnectionFactory" />
+    </bean>
+
+    <bean id="resourceManager" class="org.apache.activemq.pool.ActiveMQResourceManager" init-method="recoverResource">
+          <property name="transactionManager" ref="transactionManager" />
+          <property name="connectionFactory" ref="activemqConnectionFactory" />
+          <property name="resourceName" value="activemq.default" />
+    </bean>
+
+    <reference id="transactionManager" interface="javax.transaction.TransactionManager" />
+
+    <service ref="pooledConnectionFactory" interface="javax.jms.ConnectionFactory">
+        <service-properties>
+            <entry key="name" value="localhost"/>
+        </service-properties>
+    </service>
+
+</blueprint>
+
diff --git a/trunk/assembly/src/main/distribution/text/etc/org.apache.aries.transaction.cfg b/trunk/assembly/src/main/distribution/text/etc/org.apache.aries.transaction.cfg
new file mode 100644
index 0000000..d8d35aa
--- /dev/null
+++ b/trunk/assembly/src/main/distribution/text/etc/org.apache.aries.transaction.cfg
@@ -0,0 +1,21 @@
+#
+# 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.
+#
+#
+aries.transaction.timeout=600
+aries.transaction.howl.logFileDir=${karaf.data}/txlog/
diff --git a/trunk/assembly/src/main/distribution/text/etc/org.apache.servicemix.jbi.cfg b/trunk/assembly/src/main/distribution/text/etc/org.apache.servicemix.jbi.cfg
new file mode 100644
index 0000000..d462e8c
--- /dev/null
+++ b/trunk/assembly/src/main/distribution/text/etc/org.apache.servicemix.jbi.cfg
@@ -0,0 +1,34 @@
+################################################################################
+#
+#    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.
+#
+################################################################################
+
+# When using a forced shutdown of a SA, all pending synchronous exchanges will be canceled after this timeout
+# The value is specified in ms, the default value of 0 will wait indefinitely for all exchanges to finish
+shutdownTimeout=0
+
+# The values below can be used to configure the thread pool size for the ServiceMix JBI components.
+# - corePoolSize defines the core thread pool size (default is 4)
+# - maximumPoolSize defines the maximum thread pool size, -1 means an unbounded thread pool size (default is -1)
+# - queueSize defines the executor queue size (default is 1024)
+# - allowCoreThreadTimeout allows the core threads to timeout (defaults to true)
+# - keepAliveTime is the amount of milliseconds a thread is kept alive when idle (defaults to 60000)
+corePoolSize=4
+maximumPoolSize=-1
+queueSize=1024
+allowCoreThreadTimeout=true
+keepAliveTime=60000
diff --git a/trunk/assembly/src/main/distribution/text/etc/org.apache.servicemix.nmr.cfg b/trunk/assembly/src/main/distribution/text/etc/org.apache.servicemix.nmr.cfg
new file mode 100644
index 0000000..4125cfe
--- /dev/null
+++ b/trunk/assembly/src/main/distribution/text/etc/org.apache.servicemix.nmr.cfg
@@ -0,0 +1,37 @@
+################################################################################
+#
+#    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.
+#
+################################################################################
+
+# The values below can be used to configure the thread pool size for NMR endpoints.
+# - corePoolSize defines the core thread pool size (default is 4)
+# - maximumPoolSize defines the maximum thread pool size, -1 means an unbounded thread pool size (default is -1)
+# - queueSize defines the executor queue size (default is 1024)
+# - allowCoreThreadTimeout allows the core threads to timeout (defaults to true)
+# - keepAliveTime is the amount of milliseconds a thread is kept alive when idle (defaults to 60000)
+#
+# Endpoints are provided a ThreadPool with specific configuration.  If no configuration
+# can be found for the endpoint name, the default one can be used.
+# A given thread pool can be configured by prefixing the above properties with the name followed by a dot.
+# For example:
+#   foo.bar.corePoolSize=16
+#
+corePoolSize=4
+maximumPoolSize=-1
+queueSize=1024
+allowCoreThreadTimeout=true
+keepAliveTime=60000
diff --git a/trunk/assembly/src/main/distribution/text/etc/org.ops4j.pax.logging.cfg b/trunk/assembly/src/main/distribution/text/etc/org.ops4j.pax.logging.cfg
new file mode 100644
index 0000000..515fdc8
--- /dev/null
+++ b/trunk/assembly/src/main/distribution/text/etc/org.ops4j.pax.logging.cfg
@@ -0,0 +1,46 @@
+################################################################################
+#
+#    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=INFO, out, osgi:VmLogAppender
+log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer
+
+# 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{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %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{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
+log4j.appender.out.file=${karaf.data}/log/servicemix.log
+log4j.appender.out.append=true
+log4j.appender.out.maxFileSize=1MB
+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=servicemix
+log4j.appender.sift.appender=org.apache.log4j.FileAppender
+log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
+log4j.appender.sift.appender.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %m%n
+log4j.appender.sift.appender.file=${karaf.data}/log/$\\{bundle.name\\}.log
+log4j.appender.sift.appender.append=true
diff --git a/trunk/assembly/src/main/distribution/text/etc/system.properties b/trunk/assembly/src/main/distribution/text/etc/system.properties
new file mode 100644
index 0000000..30515d5
--- /dev/null
+++ b/trunk/assembly/src/main/distribution/text/etc/system.properties
@@ -0,0 +1,71 @@
+################################################################################
+#
+#    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.
+#
+################################################################################
+
+#
+# The properties defined in this file will be made available through system
+# properties at the very beginning of the Karaf's boot process.
+#
+
+
+# Log level when the pax-logging service is not available
+# This level will only be used while the pax-logging service bundle
+# is not fully available.
+# To change log levels, please refer to the org.ops4j.pax.logging.cfg file
+# instead.
+org.ops4j.pax.logging.DefaultServiceLog.level=ERROR
+
+#
+# Name of this karaf instance.
+#
+karaf.name=root
+
+#
+# Default repository where bundles will be loaded from before using
+# other maven repositories.  For the full maven configuration, see
+# the org.ops4j.pax.url.mvn.cfg file.
+#
+karaf.default.repository=system
+
+#
+# Location of a shell script that will be run when starting a shell
+# session.  This script can be used to create aliases and define
+# additional commands.
+#
+karaf.shell.init.script=${karaf.home}/etc/shell.init.script
+
+#
+# Set this empty property to avoid errors when validating xml documents.
+#
+xml.catalog.files=
+
+#
+# Suppress the bell in the console when hitting backspace to many times
+# for example
+#
+jline.nobell=true
+
+#
+# Default port for the OSGI HTTP Service
+#
+org.osgi.service.http.port=8181
+
+#
+# Allow usage of ${servicemix.home} as an alias for ${karaf.home}
+#
+servicemix.home=${karaf.home}
diff --git a/trunk/assembly/src/main/distribution/text/etc/users.properties b/trunk/assembly/src/main/distribution/text/etc/users.properties
new file mode 100644
index 0000000..0348fae
--- /dev/null
+++ b/trunk/assembly/src/main/distribution/text/etc/users.properties
@@ -0,0 +1,21 @@
+################################################################################
+#
+#    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.
+#
+################################################################################
+
+#
+smx=smx,admin
diff --git a/trunk/assembly/src/main/distribution/text/licenses/asm.txt b/trunk/assembly/src/main/distribution/text/licenses/asm.txt
new file mode 100644
index 0000000..6eff43a
--- /dev/null
+++ b/trunk/assembly/src/main/distribution/text/licenses/asm.txt
@@ -0,0 +1,30 @@
+Copyright (c) 2000-2005 INRIA, France Telecom
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holders nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/trunk/assembly/src/main/distribution/text/licenses/bsd.txt b/trunk/assembly/src/main/distribution/text/licenses/bsd.txt
new file mode 100644
index 0000000..1568be2
--- /dev/null
+++ b/trunk/assembly/src/main/distribution/text/licenses/bsd.txt
@@ -0,0 +1,12 @@
+The BSD License
+
+   Copyright (c) <YEAR>, <OWNER>
+   All rights reserved.
+
+   Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+    * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/trunk/assembly/src/main/distribution/text/licenses/cddl-1.0.txt b/trunk/assembly/src/main/distribution/text/licenses/cddl-1.0.txt
new file mode 100644
index 0000000..4830da9
--- /dev/null
+++ b/trunk/assembly/src/main/distribution/text/licenses/cddl-1.0.txt
@@ -0,0 +1,385 @@
+
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+
+      1. Definitions.
+
+            1.1. ÒContributorÓ means each individual or entity that
+            creates or contributes to the creation of Modifications.
+
+            1.2. ÒContributor VersionÓ means the combination of the
+            Original Software, prior Modifications used by a
+            Contributor (if any), and the Modifications made by that
+            particular Contributor.
+
+            1.3. ÒCovered SoftwareÓ means (a) the Original Software, or
+            (b) Modifications, or (c) the combination of files
+            containing Original Software with files containing
+            Modifications, in each case including portions thereof.
+
+            1.4. ÒExecutableÓ means the Covered Software in any form
+            other than Source Code. 
+
+            1.5. ÒInitial DeveloperÓ means the individual or entity
+            that first makes Original Software available under this
+            License. 
+            
+            1.6. ÒLarger WorkÓ means a work which combines Covered
+            Software or portions thereof with code not governed by the
+            terms of this License.
+
+            1.7. ÒLicenseÓ means this document.
+
+            1.8. ÒLicensableÓ means having the right to grant, to the
+            maximum extent possible, whether at the time of the initial
+            grant or subsequently acquired, any and all of the rights
+            conveyed herein.
+            
+            1.9. ÒModificationsÓ means the Source Code and Executable
+            form of any of the following: 
+
+                  A. Any file that results from an addition to,
+                  deletion from or modification of the contents of a
+                  file containing Original Software or previous
+                  Modifications; 
+
+                  B. Any new file that contains any part of the
+                  Original Software or previous Modification; or 
+
+                  C. Any new file that is contributed or otherwise made
+                  available under the terms of this License.
+
+            1.10. ÒOriginal SoftwareÓ means the Source Code and
+            Executable form of computer software code that is
+            originally released under this License. 
+
+            1.11. ÒPatent ClaimsÓ means any patent claim(s), now owned
+            or hereafter acquired, including without limitation,
+            method, process, and apparatus claims, in any patent
+            Licensable by grantor. 
+
+            1.12. ÒSource CodeÓ means (a) the common form of computer
+            software code in which modifications are made and (b)
+            associated documentation included in or with such code.
+
+            1.13. ÒYouÓ (or ÒYourÓ) means an individual or a legal
+            entity exercising rights under, and complying with all of
+            the terms of, this License. For legal entities, ÒYouÓ
+            includes any entity which controls, is controlled by, or is
+            under common control with You. For purposes of this
+            definition, ÒcontrolÓ means (a) the power, direct or
+            indirect, to cause the direction or management of such
+            entity, whether by contract or otherwise, or (b) ownership
+            of more than fifty percent (50%) of the outstanding shares
+            or beneficial ownership of such entity.
+
+      2. License Grants. 
+
+            2.1. The Initial Developer Grant.
+
+            Conditioned upon Your compliance with Section 3.1 below and
+            subject to third party intellectual property claims, the
+            Initial Developer hereby grants You a world-wide,
+            royalty-free, non-exclusive license: 
+
+                  (a) under intellectual property rights (other than
+                  patent or trademark) Licensable by Initial Developer,
+                  to use, reproduce, modify, display, perform,
+                  sublicense and distribute the Original Software (or
+                  portions thereof), with or without Modifications,
+                  and/or as part of a Larger Work; and 
+
+                  (b) under Patent Claims infringed by the making,
+                  using or selling of Original Software, to make, have
+                  made, use, practice, sell, and offer for sale, and/or
+                  otherwise dispose of the Original Software (or
+                  portions thereof). 
+
+                  (c) The licenses granted in Sections 2.1(a) and (b)
+                  are effective on the date Initial Developer first
+                  distributes or otherwise makes the Original Software
+                  available to a third party under the terms of this
+                  License. 
+
+                  (d) Notwithstanding Section 2.1(b) above, no patent
+                  license is granted: (1) for code that You delete from
+                  the Original Software, or (2) for infringements
+                  caused by: (i) the modification of the Original
+                  Software, or (ii) the combination of the Original
+                  Software with other software or devices. 
+
+            2.2. Contributor Grant.
+
+            Conditioned upon Your compliance with Section 3.1 below and
+            subject to third party intellectual property claims, each
+            Contributor hereby grants You a world-wide, royalty-free,
+            non-exclusive license:
+
+                  (a) under intellectual property rights (other than
+                  patent or trademark) Licensable by Contributor to
+                  use, reproduce, modify, display, perform, sublicense
+                  and distribute the Modifications created by such
+                  Contributor (or portions thereof), either on an
+                  unmodified basis, with other Modifications, as
+                  Covered Software and/or as part of a Larger Work; and
+                  
+
+                  (b) under Patent Claims infringed by the making,
+                  using, or selling of Modifications made by that
+                  Contributor either alone and/or in combination with
+                  its Contributor Version (or portions of such
+                  combination), to make, use, sell, offer for sale,
+                  have made, and/or otherwise dispose of: (1)
+                  Modifications made by that Contributor (or portions
+                  thereof); and (2) the combination of Modifications
+                  made by that Contributor with its Contributor Version
+                  (or portions of such combination). 
+
+                  (c) The licenses granted in Sections 2.2(a) and
+                  2.2(b) are effective on the date Contributor first
+                  distributes or otherwise makes the Modifications
+                  available to a third party. 
+
+                  (d) Notwithstanding Section 2.2(b) above, no patent
+                  license is granted: (1) for any code that Contributor
+                  has deleted from the Contributor Version; (2) for
+                  infringements caused by: (i) third party
+                  modifications of Contributor Version, or (ii) the
+                  combination of Modifications made by that Contributor
+                  with other software (except as part of the
+                  Contributor Version) or other devices; or (3) under
+                  Patent Claims infringed by Covered Software in the
+                  absence of Modifications made by that Contributor. 
+
+      3. Distribution Obligations.
+
+            3.1. Availability of Source Code.
+
+            Any Covered Software that You distribute or otherwise make
+            available in Executable form must also be made available in
+            Source Code form and that Source Code form must be
+            distributed only under the terms of this License. You must
+            include a copy of this License with every copy of the
+            Source Code form of the Covered Software You distribute or
+            otherwise make available. You must inform recipients of any
+            such Covered Software in Executable form as to how they can
+            obtain such Covered Software in Source Code form in a
+            reasonable manner on or through a medium customarily used
+            for software exchange.
+
+            3.2. Modifications.
+
+            The Modifications that You create or to which You
+            contribute are governed by the terms of this License. You
+            represent that You believe Your Modifications are Your
+            original creation(s) and/or You have sufficient rights to
+            grant the rights conveyed by this License.
+
+            3.3. Required Notices.
+
+            You must include a notice in each of Your Modifications
+            that identifies You as the Contributor of the Modification.
+            You may not remove or alter any copyright, patent or
+            trademark notices contained within the Covered Software, or
+            any notices of licensing or any descriptive text giving
+            attribution to any Contributor or the Initial Developer.
+
+            3.4. Application of Additional Terms.
+
+            You may not offer or impose any terms on any Covered
+            Software in Source Code form that alters or restricts the
+            applicable version of this License or the recipientsÕ
+            rights hereunder. You may choose to offer, and to charge a
+            fee for, warranty, support, indemnity or liability
+            obligations to one or more recipients of Covered Software.
+            However, you may do so only on Your own behalf, and not on
+            behalf of the Initial Developer or any Contributor. You
+            must make it absolutely clear that any such warranty,
+            support, indemnity or liability obligation is offered by
+            You alone, and You hereby agree to indemnify the Initial
+            Developer and every Contributor for any liability incurred
+            by the Initial Developer or such Contributor as a result of
+            warranty, support, indemnity or liability terms You offer.
+          
+
+            3.5. Distribution of Executable Versions.
+
+            You may distribute the Executable form of the Covered
+            Software under the terms of this License or under the terms
+            of a license of Your choice, which may contain terms
+            different from this License, provided that You are in
+            compliance with the terms of this License and that the
+            license for the Executable form does not attempt to limit
+            or alter the recipientÕs rights in the Source Code form
+            from the rights set forth in this License. If You
+            distribute the Covered Software in Executable form under a
+            different license, You must make it absolutely clear that
+            any terms which differ from this License are offered by You
+            alone, not by the Initial Developer or Contributor. You
+            hereby agree to indemnify the Initial Developer and every
+            Contributor for any liability incurred by the Initial
+            Developer or such Contributor as a result of any such terms
+            You offer.
+
+            3.6. Larger Works.
+
+            You may create a Larger Work by combining Covered Software
+            with other code not governed by the terms of this License
+            and distribute the Larger Work as a single product. In such
+            a case, You must make sure the requirements of this License
+            are fulfilled for the Covered Software. 
+            
+      4. Versions of the License. 
+
+            4.1. New Versions.
+
+            Sun Microsystems, Inc. is the initial license steward and
+            may publish revised and/or new versions of this License
+            from time to time. Each version will be given a
+            distinguishing version number. Except as provided in
+            Section 4.3, no one other than the license steward has the
+            right to modify this License. 
+
+            4.2. Effect of New Versions.
+
+            You may always continue to use, distribute or otherwise
+            make the Covered Software available under the terms of the
+            version of the License under which You originally received
+            the Covered Software. If the Initial Developer includes a
+            notice in the Original Software prohibiting it from being
+            distributed or otherwise made available under any
+            subsequent version of the License, You must distribute and
+            make the Covered Software available under the terms of the
+            version of the License under which You originally received
+            the Covered Software. Otherwise, You may also choose to
+            use, distribute or otherwise make the Covered Software
+            available under the terms of any subsequent version of the
+            License published by the license steward. 
+
+            4.3. Modified Versions.
+
+            When You are an Initial Developer and You want to create a
+            new license for Your Original Software, You may create and
+            use a modified version of this License if You: (a) rename
+            the license and remove any references to the name of the
+            license steward (except to note that the license differs
+            from this License); and (b) otherwise make it clear that
+            the license contains terms which differ from this License.
+            
+
+      5. DISCLAIMER OF WARRANTY.
+
+      COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN ÒAS ISÓ
+      BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+      INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
+      SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
+      PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
+      PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
+      COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
+      INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF
+      ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
+      WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+      ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+      DISCLAIMER. 
+
+      6. TERMINATION. 
+
+            6.1. This License and the rights granted hereunder will
+            terminate automatically if You fail to comply with terms
+            herein and fail to cure such breach within 30 days of
+            becoming aware of the breach. Provisions which, by their
+            nature, must remain in effect beyond the termination of
+            this License shall survive.
+
+            6.2. If You assert a patent infringement claim (excluding
+            declaratory judgment actions) against Initial Developer or
+            a Contributor (the Initial Developer or Contributor against
+            whom You assert such claim is referred to as ÒParticipantÓ)
+            alleging that the Participant Software (meaning the
+            Contributor Version where the Participant is a Contributor
+            or the Original Software where the Participant is the
+            Initial Developer) directly or indirectly infringes any
+            patent, then any and all rights granted directly or
+            indirectly to You by such Participant, the Initial
+            Developer (if the Initial Developer is not the Participant)
+            and all Contributors under Sections 2.1 and/or 2.2 of this
+            License shall, upon 60 days notice from Participant
+            terminate prospectively and automatically at the expiration
+            of such 60 day notice period, unless if within such 60 day
+            period You withdraw Your claim with respect to the
+            Participant Software against such Participant either
+            unilaterally or pursuant to a written agreement with
+            Participant.
+
+            6.3. In the event of termination under Sections 6.1 or 6.2
+            above, all end user licenses that have been validly granted
+            by You or any distributor hereunder prior to termination
+            (excluding licenses granted to You by any distributor)
+            shall survive termination.
+
+      7. LIMITATION OF LIABILITY.
+
+      UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+      (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
+      INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+      COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
+      LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+      CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+      LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
+      STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+      COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+      INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+      LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
+      INJURY RESULTING FROM SUCH PARTYÕS NEGLIGENCE TO THE EXTENT
+      APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
+      NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+      CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
+      APPLY TO YOU.
+
+      8. U.S. GOVERNMENT END USERS.
+
+      The Covered Software is a Òcommercial item,Ó as that term is
+      defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of Òcommercial
+      computer softwareÓ (as that term is defined at 48 C.F.R. ¤
+      252.227-7014(a)(1)) and Òcommercial computer software
+      documentationÓ as such terms are used in 48 C.F.R. 12.212 (Sept.
+      1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
+      through 227.7202-4 (June 1995), all U.S. Government End Users
+      acquire Covered Software with only those rights set forth herein.
+      This U.S. Government Rights clause is in lieu of, and supersedes,
+      any other FAR, DFAR, or other clause or provision that addresses
+      Government rights in computer software under this License.
+
+      9. MISCELLANEOUS.
+
+      This License represents the complete agreement concerning subject
+      matter hereof. If any provision of this License is held to be
+      unenforceable, such provision shall be reformed only to the
+      extent necessary to make it enforceable. This License shall be
+      governed by the law of the jurisdiction specified in a notice
+      contained within the Original Software (except to the extent
+      applicable law, if any, provides otherwise), excluding such
+      jurisdictionÕs conflict-of-law provisions. Any litigation
+      relating to this License shall be subject to the jurisdiction of
+      the courts located in the jurisdiction and venue specified in a
+      notice contained within the Original Software, with the losing
+      party responsible for costs, including, without limitation, court
+      costs and reasonable attorneysÕ fees and expenses. The
+      application of the United Nations Convention on Contracts for the
+      International Sale of Goods is expressly excluded. Any law or
+      regulation which provides that the language of a contract shall
+      be construed against the drafter shall not apply to this License.
+      You agree that You alone are responsible for compliance with the
+      United States export administration regulations (and the export
+      control laws and regulation of any other countries) when You use,
+      distribute or otherwise make available any Covered Software.
+
+      10. RESPONSIBILITY FOR CLAIMS.
+
+      As between Initial Developer and the Contributors, each party is
+      responsible for claims and damages arising, directly or
+      indirectly, out of its utilization of rights under this License
+      and You agree to work with Initial Developer and Contributors to
+      distribute such responsibility on an equitable basis. Nothing
+      herein is intended or shall be deemed to constitute any admission
+      of liability.
diff --git a/trunk/assembly/src/main/distribution/text/licenses/cpl-1.0.txt b/trunk/assembly/src/main/distribution/text/licenses/cpl-1.0.txt
new file mode 100644
index 0000000..c9990a7
--- /dev/null
+++ b/trunk/assembly/src/main/distribution/text/licenses/cpl-1.0.txt
@@ -0,0 +1,213 @@
+Common Public License Version 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+    a) in the case of the initial Contributor, the initial code and
+documentation distributed under this Agreement, and
+
+    b) in the case of each subsequent Contributor:
+
+    i) changes to the Program, and
+
+    ii) additions to the Program;
+
+    where such changes and/or additions to the Program originate from and are
+distributed by that particular Contributor. A Contribution 'originates' from a
+Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to
+the Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are
+necessarily infringed by the use or sale of its Contribution alone or when
+combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+2. GRANT OF RIGHTS
+
+    a) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free copyright license to
+reproduce, prepare derivative works of, publicly display, publicly perform,
+distribute and sublicense the Contribution of such Contributor, if any, and such
+derivative works, in source code and object code form.
+
+    b) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
+Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form.
+This patent license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the
+Licensed Patents. The patent license shall not apply to any other combinations
+which include the Contribution. No hardware per se is licensed hereunder.
+
+    c) Recipient understands that although each Contributor grants the licenses
+to its Contributions set forth herein, no assurances are provided by any
+Contributor that the Program does not infringe the patent or other intellectual
+property rights of any other entity. Each Contributor disclaims any liability to
+Recipient for claims brought by any other entity based on infringement of
+intellectual property rights or otherwise. As a condition to exercising the
+rights and licenses granted hereunder, each Recipient hereby assumes sole
+responsibility to secure any other intellectual property rights needed, if any.
+For example, if a third party patent license is required to allow Recipient to
+distribute the Program, it is Recipient's responsibility to acquire that license
+before distributing the Program.
+
+    d) Each Contributor represents that to its knowledge it has sufficient
+copyright rights in its Contribution, if any, to grant the copyright license set
+forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its
+own license agreement, provided that:
+
+    a) it complies with the terms and conditions of this Agreement; and
+
+    b) its license agreement:
+
+    i) effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title and
+non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+    ii) effectively excludes on behalf of all Contributors all liability for
+damages, including direct, indirect, special, incidental and consequential
+damages, such as lost profits;
+
+    iii) states that any provisions which differ from this Agreement are offered
+by that Contributor alone and not by any other party; and
+
+    iv) states that source code for the Program is available from such
+Contributor, and informs licensees how to obtain it in a reasonable manner on or
+through a medium customarily used for software exchange. 
+
+When the Program is made available in source code form:
+
+    a) it must be made available under this Agreement; and
+
+    b) a copy of this Agreement must be included with each copy of the Program. 
+
+Contributors may not remove or alter any copyright notices contained within the
+Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if
+any, in a manner that reasonably allows subsequent Recipients to identify the
+originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with
+respect to end users, business partners and the like. While this license is
+intended to facilitate the commercial use of the Program, the Contributor who
+includes the Program in a commercial product offering should do so in a manner
+which does not create potential liability for other Contributors. Therefore, if
+a Contributor includes the Program in a commercial product offering, such
+Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
+every other Contributor ("Indemnified Contributor") against any losses, damages
+and costs (collectively "Losses") arising from claims, lawsuits and other legal
+actions brought by a third party against the Indemnified Contributor to the
+extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to
+control, and cooperate with the Commercial Contributor in, the defense and any
+related settlement negotiations. The Indemnified Contributor may participate in
+any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product
+offering, Product X. That Contributor is then a Commercial Contributor. If that
+Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such
+Commercial Contributor's responsibility alone. Under this section, the
+Commercial Contributor would have to defend claims against the other
+Contributors related to those performance claims and warranties, and if a court
+requires any other Contributor to pay any damages as a result, the Commercial
+Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
+Recipient is solely responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its exercise of
+rights under this Agreement, including but not limited to the risks and costs of
+program errors, compliance with applicable laws, damage to or loss of data,
+programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
+PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable
+law, it shall not affect the validity or enforceability of the remainder of the
+terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such
+provision valid and enforceable.
+
+If Recipient institutes patent litigation against a Contributor with respect to
+a patent applicable to software (including a cross-claim or counterclaim in a
+lawsuit), then any patent licenses granted by that Contributor to such Recipient
+under this Agreement shall terminate as of the date such litigation is filed. In
+addition, if Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the Program
+itself (excluding combinations of the Program with other software or hardware)
+infringes such Recipient's patent(s), then such Recipient's rights granted under
+Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to
+comply with any of the material terms or conditions of this Agreement and does
+not cure such failure in a reasonable period of time after becoming aware of
+such noncompliance. If all Recipient's rights under this Agreement terminate,
+Recipient agrees to cease use and distribution of the Program as soon as
+reasonably practicable. However, Recipient's obligations under this Agreement
+and any licenses granted by Recipient relating to the Program shall continue and
+survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in
+order to avoid inconsistency the Agreement is copyrighted and may only be
+modified in the following manner. The Agreement Steward reserves the right to
+publish new versions (including revisions) of this Agreement from time to time.
+No one other than the Agreement Steward has the right to modify this Agreement.
+IBM is the initial Agreement Steward. IBM may assign the responsibility to serve
+as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the Agreement
+under which it was received. In addition, after a new version of the Agreement
+is published, Contributor may elect to distribute the Program (including its
+Contributions) under the new version. Except as expressly stated in Sections
+2(a) and 2(b) above, Recipient receives no rights or licenses to the
+intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to this
+Agreement will bring a legal action under this Agreement more than one year
+after the cause of action arose. Each party waives its rights to a jury trial in
+any resulting litigation.
diff --git a/trunk/assembly/src/main/filtered-resources/activemq-features.xml b/trunk/assembly/src/main/filtered-resources/activemq-features.xml
new file mode 100644
index 0000000..bb65b36
--- /dev/null
+++ b/trunk/assembly/src/main/filtered-resources/activemq-features.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<features name="activemq-${activemq.version}">
+    <repository>mvn:org.apache.karaf/apache-karaf/${karaf.version}/xml/features</repository>
+    
+    <feature name="activemq" version="${activemq.version}">
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-annotation_1.0_spec/${geronimo-annotation.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/${geronimo-jta.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/${geronimo-jms.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-j2ee-management_1.1_spec/${geronimo-j2ee-management.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-pool/${commons-pool.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-collections/${commons-collections.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-lang/${commons-lang.bundle.version}</bundle>
+        <bundle>mvn:commons-codec/commons-codec/${commons-codec.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.oro/${oro.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.velocity/${velocity.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jasypt/${jasypt.bundle.version}</bundle>
+        <bundle>mvn:org.apache.activemq/activemq-core/${activemq.version}</bundle>
+        <bundle>mvn:org.apache.activemq/kahadb/${activemq.version}</bundle>
+        <bundle>mvn:org.apache.activemq/activemq-console/${activemq.version}</bundle>
+        <bundle>mvn:org.apache.activemq/activemq-ra/${activemq.version}</bundle>
+        <bundle>mvn:org.apache.activemq/activemq-pool/${activemq.version}</bundle>
+        <bundle>mvn:org.apache.activemq/activemq-karaf/${activemq.version}</bundle>
+        <bundle>mvn:org.apache.aries.transaction/org.apache.aries.transaction.manager/${aries.transaction.version}</bundle>
+    </feature>
+    
+    <feature name="activemq-spring" version="${activemq.version}">
+        <feature version="${spring.osgi.version}">spring-dm</feature>
+        <feature version="${activemq.version}">activemq</feature>
+        <bundle>mvn:org.apache.activemq/activemq-spring/${activemq.version}</bundle>
+        <bundle>mvn:org.apache.xbean/xbean-spring/${xbean.version}</bundle>
+    </feature>
+    
+    <feature name="activemq-blueprint" version="${activemq.version}">
+        <feature version="${activemq.version}">activemq</feature>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.scripting-api-1.0/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.commons/commons-jexl/${commons-jexl.version}</bundle>
+        <bundle>mvn:org.apache.xbean/xbean-blueprint/${xbean.version}</bundle>
+        <bundle>mvn:org.apache.activemq/activemq-blueprint/${activemq.version}</bundle>
+    </feature>
+    
+    <!-- do "features:install war" before installing this one -->
+    <feature name="activemq-web-console" version="${activemq.version}">
+        <bundle>war:mvn:org.apache.activemq/activemq-web-console/${activemq.version}/war?Webapp-Context=activemq-web-console</bundle>
+    </feature>
+    
+</features>
diff --git a/trunk/assembly/src/main/filtered-resources/camel-features.xml b/trunk/assembly/src/main/filtered-resources/camel-features.xml
new file mode 100644
index 0000000..85c285f
--- /dev/null
+++ b/trunk/assembly/src/main/filtered-resources/camel-features.xml
@@ -0,0 +1,590 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<features>
+    <repository>mvn:org.apache.karaf/apache-karaf/${karaf.version}/xml/features</repository>
+    <feature name='camel' version='${camel.version}'>
+        <feature version='${camel.version}'>camel-core</feature>
+        <feature version='${camel.version}'>camel-spring</feature>
+        <feature version='${camel.version}'>camel-blueprint</feature>
+    </feature>
+    <feature name='camel-core' version='${camel.version}'>
+        <feature version="${spring.version}">spring</feature>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.activation-api-1.1/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxb-api-2.2/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.stax-api-1.0/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jaxb-impl/${jaxb-impl.bundle.version}</bundle>
+        <bundle>mvn:org.fusesource.commonman/commons-management/${commons-management.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-core/${camel.version}</bundle>
+    </feature>
+    <feature name='camel-spring' version='${camel.version}'>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/${geronimo-jta.version}</bundle>
+        <feature version='${spring.version}'>spring</feature>
+        <feature version='${spring.osgi.version}'>spring-dm</feature>
+        <bundle>mvn:org.springframework/spring-tx/${spring.version}</bundle>
+        <feature version='${camel.version}'>camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-spring/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-blueprint" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-blueprint/${camel.version}</bundle>
+        <bundle>mvn:org.apache.aries.blueprint/org.apache.aries.blueprint/${aries.blueprint.version}</bundle>
+    </feature>
+    <feature name='camel-test' version='${camel.version}'>
+        <feature version='${camel.version}'>camel-spring</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.junit/${junit.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-test/${camel.version}</bundle>
+    </feature>
+    <feature name='camel-cxf' version='${camel.version}'>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-pool/${commons-pool.bundle.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/${geronimo-jms.version}</bundle>
+        <bundle>mvn:org.springframework/spring-jms/${spring.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.asm/${asm.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.fastinfoset/${fastinfoset.bundle.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-servlet_3.0_spec/${geronimo-servlet.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jetty/${jetty.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jdom/${jdom.bundle.version}</bundle>
+        <bundle>mvn:commons-codec/commons-codec/${commons-codec.bundle.version}</bundle>
+        <bundle>mvn:org.codehaus.jettison/jettison/${jettison.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ant/${ant.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.bcel/${bcel.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xalan/${xalan.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xerces/${xerces.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlbeans/${xmlbeans.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlsec/${xmlsec.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlresolver/${xmlresolver.bundle.version}</bundle>
+        <bundle>mvn:org.codehaus.woodstox/woodstox-core-asl/${woodstox.version}</bundle>
+        <bundle>mvn:org.codehaus.woodstox/stax2-api/${woodstox.stax2-api.version}</bundle>
+        <bundle>mvn:org.apache.ws.commons.schema/XmlSchema/${xmlschema.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-lang/${commons-lang.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-collections/${commons-collections.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.antlr/${antlr2.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.oro/${oro.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.velocity/${velocity.bundle.version}</bundle>
+        <bundle>mvn:javax.mail/mail/${javax.mail.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.neethi/${neethi.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.abdera/${abdera.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxws-api-${jaxws-api.version}/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-annotation_1.0_spec/${geronimo-annotation.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.saaj-api-1.3/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.saaj-impl/${saaj-impl.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.wsdl4j/${wsdl4j.bundle.version}</bundle>
+        <bundle>mvn:org.apache.ws.security/wss4j/${wss4j.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.opensaml/${opensaml.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jsr311-api-1.1/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-ws-metadata_2.0_spec/${geronimo-ws-metadata.version}</bundle>
+        <bundle>mvn:org.apache.cxf/cxf-bundle/${cxf.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-io/${commons-io.bundle.version}</bundle>
+        <feature version="${camel.version}">camel-spring</feature>
+        <bundle>mvn:org.apache.camel/camel-cxf/${camel.version}</bundle>
+    </feature>
+    <feature name='camel-cache' version='${camel.version}'>
+        <feature version='${camel.version}'>camel-core</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ehcache/${ehcache.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jdom/${jdom.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-cache/${camel.version}</bundle>
+    </feature>
+    <feature name='camel-castor' version='${camel.version}'>
+        <feature version='${camel.version}'>camel-core</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.oro/${oro.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.regexp/${regexp.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.castor/${castor.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-castor/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-crypto" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:commons-codec/commons-codec/${commons-codec.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-crypto/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-http" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-httpclient/${commons-httpclient.bundle.version}</bundle>
+        <bundle>mvn:commons-codec/commons-codec/${commons-codec.bundle.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-servlet_3.0_spec/${geronimo-servlet.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-http/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-http4" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.httpcomponents/httpcore-osgi/${httpcomponents.version}</bundle>
+        <bundle>mvn:org.apache.httpcomponents/httpclient-osgi/${httpcomponents.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-servlet_3.0_spec/${geronimo-servlet.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-http4/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-mina" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.mina/${mina.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-mina/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-jetty" version="${camel.version}">
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-servlet_3.0_spec/${geronimo-servlet.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-util/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-io/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-http/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-client/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-continuation/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-jmx/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-server/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-security/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-servlet/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-servlets/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-xml/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-webapp/${jetty.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <feature version="${camel.version}">camel-http</feature>
+        <bundle>mvn:org.apache.camel/camel-jetty/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-servlet" version="${camel.version}">
+        <features version="${camel.version}">camel-http</features>
+        <bundle>mvn:org.apache.camel/camel-servlet/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-jms" version="${camel.version}">
+        <bundle>mvn:org.springframework/spring-core/${spring.version}</bundle>
+        <bundle>mvn:org.springframework/spring-beans/${spring.version}</bundle>
+        <bundle>mvn:org.springframework/spring-context/${spring.version}</bundle>
+        <bundle>mvn:org.springframework/spring-tx/${spring.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/${geronimo-jta.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-pool/${commons-pool.bundle.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/${geronimo-jms.version}</bundle>
+        <bundle>mvn:org.springframework/spring-jms/${spring.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-jms/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-amqp" version="${camel.version}">
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-lang/${commons-lang.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-collections/${commons-collections.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.mina/${mina.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.qpid/${qpid.bundle.version}</bundle>
+        <feature version="${camel.version}">camel-jms</feature>
+        <bundle>mvn:org.apache.camel/camel-amqp/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-atom" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.abdera/${abdera.bundle.version}</bundle>
+        <bundle>mvn:commons-codec/commons-codec/${commons-codec.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-atom/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-bam" version="${camel.version}">
+        <bundle>mvn:org.springframework/spring-tx/${spring.version}</bundle>
+        <bundle>mvn:org.springframework/spring-web/${spring.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/${geronimo-jta.version}</bundle>
+        <bundle>mvn:org.springframework/spring-jdbc/${spring.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-pool/${commons-pool.bundle.version}</bundle>
+        <bundle>mvn:commons-dbcp/commons-dbcp/${commons-dbcp.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-lang/${commons-lang.bundle.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/${geronimo-jms.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.cglib/${cglib.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.java-persistence-api-1.1.1/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.springframework/spring-orm/${spring.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.oscache/${oscache.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ibatis-sqlmap/${ibatis-sqlmap.bundle.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-bam/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-bean-validator" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jsr303-api-1.0.0/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.scripting-api-1.0/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.hibernate-validator/${hibernate-validator.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-bean-validator/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-bindy" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-bindy/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-cometd" version="${camel.version}">
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-servlet_3.0_spec/${geronimo-servlet.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-util/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-io/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-http/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-client/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-continuation/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-server/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-security/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-servlet/${jetty.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.cometd-java-server/${cometd-java-server.bundle.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-cometd/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-csv" version="${camel.version}">
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-csv/${commons-csv.bundle.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-csv/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-dozer" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.ops4j.pax.web/pax-web-jsp/${pax.web.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.dozer/${dozer.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-lang/${commons-lang.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-collections/${commons-collections.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlbeans/${xmlbeans.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-beanutils/${commons-beanutils.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-dozer/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-exec" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.commons/commons-exec/${commons-exec.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-io/${commons-io.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-exec/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-flatpack" version="${camel.version}">
+        <feature version="${camel.version}">camel-spring</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jdom/${jdom.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jexcelapi/${jexcelapi.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.flatpack/${flatpack.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-flatpack/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-freemarker" version="${camel.version}">
+        <feature version="${camel.version}">camel-spring</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.freemarker/${freemarker.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-freemarker/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-ftp" version="${camel.version}">
+        <bundle>mvn:commons-net/commons-net/${commons-net.bundle.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsch/${jsch.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-ftp/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-guice" version="${camel.version}">
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-annotation_1.0_spec/${geronimo-annotation.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aopalliance/${aopalliance.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.guice/${guiceyfruit.bundle.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-guice/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-groovy" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ant/${ant.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.scripting-api-1.0/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.codehaus.groovy/groovy-all/${groovy.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-groovy/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-hl7" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlresolver/${xmlresolver.bundle.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/${geronimo-jta.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/${geronimo-jms.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.bcel/${bcel.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xerces/${xerces.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jdom/${jdom.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xalan/${xalan.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.hapi/${hapi.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.mina/${mina.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-hl7/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-hawtdb" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:http://repo.fusesource.com/nexus/content/groups/public!org.fusesource.hawtdb/hawtdb/${hawtdb.version}</bundle>
+        <bundle>mvn:http://repo.fusesource.com/nexus/content/groups/public!org.fusesource.hawtbuf/hawtbuf/${hawtbuf.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-hawtdb/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-ibatis" version="${camel.version}">
+        <feature version="${camel.version}">camel-spring</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-pool/${commons-pool.bundle.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-servlet_3.0_spec/${geronimo-servlet.version}</bundle>
+        <bundle>mvn:commons-dbcp/commons-dbcp/${commons-dbcp.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.oscache/${oscache.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.cglib/${cglib.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ibatis-sqlmap/${ibatis-sqlmap.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-ibatis/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-irc" version="${camel.version}">
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.irclib/${irclib.bundle.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-irc/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-jackson" version="${camel.version}">
+        <bundle>mvn:org.codehaus.jackson/jackson-core-asl/${jackson.version}</bundle>
+        <bundle>mvn:org.codehaus.jackson/jackson-mapper-asl/${jackson.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-jackson/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-jasypt" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-jasypt/${camel.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-lang/${commons-lang.bundle.version}</bundle>
+        <bundle>mvn:commons-codec/commons-codec/${commons-codec.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jasypt/${jasypt.bundle.version}</bundle>
+    </feature>
+    <feature name="camel-jaxb" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-jaxb/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-jcr" version="${camel.version}">
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jcr-api/${jcr-api.bundle.version}</bundle>
+        <bundle>mvn:org.apache.jackrabbit/jackrabbit-jcr-commons/${jackrabbit.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-jcr/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-jing" version="${camel.version}">
+        <feature version="${camel.version}">camel-spring</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ant/${ant.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.isorelax/${isorelax.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jing/${jing.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-jing/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-jdbc" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-jdbc/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-josql" version="${camel.version}">
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.josql/${josql.bundle.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-josql/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-jpa" version="${camel.version}">
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.java-persistence-api-1.1.1/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.springframework/spring-tx/${spring.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-el_1.0_spec/${geronimo-el.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/${geronimo-jta.version}</bundle>
+        <bundle>mvn:org.springframework/spring-jdbc/${spring.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-lang/${commons-lang.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-collections/${commons-collections.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-pool/${commons-pool.bundle.version}</bundle>
+        <bundle>mvn:commons-dbcp/commons-dbcp/${commons-dbcp.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ant/${ant.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.serp/${serp.bundle.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/${geronimo-jms.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.openjpa/${openjpa.bundle.version}</bundle>
+        <bundle>mvn:org.springframework/spring-orm/${spring.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-jpa/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-jxpath" version="${camel.version}">
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-servlet_3.0_spec/${geronimo-servlet.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-el_1.0_spec/${geronimo-el.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-jsp_2.1_spec/${geronimo-jsp.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-beanutils/${commons-beanutils.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jdom/${jdom.bundle.version}</bundle>
+        <bundle>mvn:commons-jxpath/commons-jxpath/${commons-jxpath.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-jxpath/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-juel" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.ops4j.pax.web/pax-web-jsp/${pax.web.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.juel/${juel.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-juel/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-ldap" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-ldap/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-lucene" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.lucene/${lucene.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-lucene/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-mail" version="${camel.version}">
+        <bundle>mvn:org.springframework/spring-context/${spring.version}</bundle>
+        <bundle>mvn:org.springframework/spring-context-support/${spring.version}</bundle>
+        <bundle>mvn:javax.mail/mail/${javax.mail.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-mail/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-msv" version="${camel.version}">
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlresolver/${xmlresolver.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xerces/${xerces.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ant/${ant.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.isorelax/${isorelax.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-msv/${camel.version}</bundle>
+        <feature version="${camel.version}">camel-spring</feature>
+    </feature>
+    <feature name="camel-mvel" version="${camel.version}">
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.mvel/${mvel.bundle.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-mvel/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-nagios" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsendnsca-core/${jsendnsca-core.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-nagios/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-netty" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.netty/${netty.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-netty/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-ognl" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ognl/${ognl.bundle.version}</bundle>
+        <bundle>mvn:http://repository.springsource.com/maven/bundles/external!org.jboss.javassist/com.springsource.javassist/${javassist.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-ognl/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-printer" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-printer/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-protobuf" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.protobuf-java/${protobuf-java.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-protobuf/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-quartz" version="${camel.version}">
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-collections/${commons-collections.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-pool/${commons-pool.bundle.version}</bundle>
+        <bundle>mvn:commons-dbcp/commons-dbcp/${commons-dbcp.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/${geronimo-jta.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-beanutils/${commons-beanutils.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.quartz/${quartz.bundle.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-quartz/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-restlet" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-restlet/${camel.version}</bundle>
+        <bundle>mvn:http://maven.restlet.org!org.restlet/org.restlet/${restlet.version}</bundle>
+        <bundle>mvn:http://maven.restlet.org!com.noelios.restlet/com.noelios.restlet/${restlet.version}</bundle>
+    </feature>
+    <feature name="camel-rmi" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-rmi/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-rss" version="${camel.version}">
+        <feature version="${camel.version}">camel-atom</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jdom/${jdom.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.rome/${rome.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-rss/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-saxon" version="${camel.version}">
+        <feature version="${camel.version}">camel-spring</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.saxon/${saxon.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-saxon/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-scala" version="${camel.version}">
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.scala-library/${scala-library.bundle.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-scala/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-script" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.scripting-api-1.0/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-script/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-sip" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jain-sip-api-1.2/${servicemix.specs.version}</bundle>
+	    <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jain-sip-ri/${jain-sip-ri.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-sip/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-shiro" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-beanutils/${commons-beanutils.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.shiro/${shiro.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-shiro/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-smpp" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsmpp/${jsmpp.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-smpp/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-snmp" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.snmp4j/${snmp4j.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-snmp/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-soap" version="${camel.version}">
+        <feature version="${camel.version}">camel-jaxb</feature>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-ws-metadata_2.0_spec/${geronimo-ws-metadata.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxws-api-${jaxws-api.version}/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.saaj-api-1.3/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-soap/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-spring-integration" version="${camel.version}">
+        <bundle>mvn:http://repository.springsource.com/maven/bundles/release!org.springframework.integration/org.springframework.integration/1.0.4.RELEASE
+        </bundle>
+        <feature version="${camel.version}">camel-spring</feature>
+        <bundle>mvn:org.apache.camel/camel-spring-integration/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-spring-javaconfig" version="${camel.version}">
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.cglib/${cglib.bundle.version}</bundle>
+        <feature version="${camel.version}">camel-spring</feature>
+        <bundle>mvn:org.springframework/spring-test/${spring.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-spring-javaconfig/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-spring-security" version="${camel.version}">
+        <feature version="${camel.version}">camel-spring</feature>
+        <bundle>mvn:org.springframework.security/spring-security-core/${spring.version}</bundle>
+        <bundle>mvn:org.springframework.security/spring-security-config/${spring.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-spring-security/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-sql" version="${camel.version}">
+        <bundle>mvn:org.springframework/spring-tx/${spring.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/${geronimo-jta.version}</bundle>
+        <bundle>mvn:org.springframework/spring-jdbc/${spring.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-sql/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-stream" version="${camel.version}">
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-stream/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-string-template" version="${camel.version}">
+        <feature version="${camel.version}">camel-spring</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.antlr/${antlr2.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.stringtemplate/${stringtemplate.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-stringtemplate/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-tagsoup" version="${camel.version}">
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.tagsoup/${tagsoup.bundle.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-tagsoup/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-velocity" version="${camel.version}">
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-servlet_3.0_spec/${geronimo-servlet.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-lang/${commons-lang.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-collections/${commons-collections.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jdom/${jdom.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ant/${ant.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.antlr/${antlr2.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.werken-xpath/${werken-xpath.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.oro/${oro.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.velocity/${velocity.bundle.version}</bundle>
+        <feature version="${camel.version}">camel-spring</feature>
+        <bundle>mvn:org.apache.camel/camel-velocity/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-xmlbeans" version="${camel.version}">
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ant/${ant.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlbeans/${xmlbeans.bundle.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-xmlbeans/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-xmlsecurity" version="${camel.version}">
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xalan/${xalan.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlsec/${xmlsec.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xerces/${xerces.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlresolver/${xmlresolver.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.bcel/${bcel.bundle.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-xmlsecurity/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-xmpp" version="${camel.version}">
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xpp3/${xpp3.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.smack/${smack.bundle.version}</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.camel/camel-xmpp/${camel.version}</bundle>
+    </feature>
+    <feature name="camel-xstream" version="${camel.version}">
+        <bundle>mvn:org.codehaus.jettison/jettison/1.2</bundle>
+        <feature version="${camel.version}">camel-core</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xpp3/${xpp3.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.joda-time/${joda-time.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jdom/${jdom.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.dom4j/${dom4j.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xstream/${xstream.bundle.version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-xstream/${camel.version}</bundle>
+    </feature>
+</features>
diff --git a/trunk/assembly/src/main/filtered-resources/etc/custom.properties b/trunk/assembly/src/main/filtered-resources/etc/custom.properties
new file mode 100644
index 0000000..73c2594
--- /dev/null
+++ b/trunk/assembly/src/main/filtered-resources/etc/custom.properties
@@ -0,0 +1,35 @@
+################################################################################
+#
+#    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.
+#
+################################################################################
+
+#
+# You can place any customized configuration here.
+# All the values specified here will override the default value.
+#
+
+karaf.systemBundlesStartLevel=50
+
+obr.repository.url=http://svn.apache.org/repos/asf/servicemix/smx4/obr-repo/repository.xml
+
+org.osgi.framework.system.packages.extra = \
+  org.apache.karaf.branding; \
+  com.sun.org.apache.xalan.internal.xsltc.trax; \
+  com.sun.org.apache.xerces.internal.dom; \
+  com.sun.org.apache.xerces.internal.jaxp; \
+  com.sun.org.apache.xerces.internal.xni; \
+  com.sun.jndi.ldap
diff --git a/trunk/assembly/src/main/filtered-resources/etc/jre.properties b/trunk/assembly/src/main/filtered-resources/etc/jre.properties
new file mode 100644
index 0000000..f1779d8
--- /dev/null
+++ b/trunk/assembly/src/main/filtered-resources/etc/jre.properties
@@ -0,0 +1,315 @@
+################################################################################
+#
+#    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.
+#
+################################################################################
+
+#
+# Java platform package export properties.
+#
+
+
+# Standard package set.  Note that:
+#   - javax.transaction* is exported with a mandatory attribute 
+jre-1.5= \
+ javax.accessibility, \
+ javax.activity, \
+ javax.crypto, \
+ javax.crypto.interfaces, \
+ javax.crypto.spec, \
+ javax.imageio, \
+ javax.imageio.event, \
+ javax.imageio.metadata, \
+ javax.imageio.plugins.bmp, \
+ javax.imageio.plugins.jpeg, \
+ javax.imageio.spi, \
+ javax.imageio.stream, \
+ javax.management, \
+ javax.management.loading, \
+ javax.management.modelmbean, \
+ javax.management.monitor, \
+ javax.management.openmbean, \
+ javax.management.relation, \
+ javax.management.remote, \
+ javax.management.remote.rmi, \
+ javax.management.timer, \
+ javax.naming, \
+ javax.naming.directory, \
+ javax.naming.event, \
+ javax.naming.ldap, \
+ javax.naming.spi, \
+ javax.net, \
+ javax.net.ssl, \
+ javax.print, \
+ javax.print.attribute, \
+ javax.print.attribute.standard, \
+ javax.print.event, \
+ javax.rmi, \
+ javax.rmi.CORBA, \
+ javax.rmi.ssl, \
+ javax.security.auth, \
+ javax.security.auth.callback, \
+ javax.security.auth.kerberos, \
+ javax.security.auth.login, \
+ javax.security.auth.spi, \
+ javax.security.auth.x500, \
+ javax.security.cert, \
+ javax.security.sasl, \
+ javax.sound.midi, \
+ javax.sound.midi.spi, \
+ javax.sound.sampled, \
+ javax.sound.sampled.spi, \
+ javax.sql, \
+ javax.sql.rowset, \
+ javax.sql.rowset.serial, \
+ javax.sql.rowset.spi, \
+ javax.swing, \
+ javax.swing.border, \
+ javax.swing.colorchooser, \
+ javax.swing.event, \
+ javax.swing.filechooser, \
+ javax.swing.plaf, \
+ javax.swing.plaf.basic, \
+ javax.swing.plaf.metal, \
+ javax.swing.plaf.multi, \
+ javax.swing.plaf.synth, \
+ javax.swing.table, \
+ javax.swing.text, \
+ javax.swing.text.html, \
+ javax.swing.text.html.parser, \
+ javax.swing.text.rtf, \
+ javax.swing.tree, \
+ javax.swing.undo, \
+ javax.transaction; javax.transaction.xa; partial=true; mandatory:=partial, \
+ javax.xml, \
+ javax.xml.datatype, \
+ javax.xml.namespace, \
+ javax.xml.parsers, \
+ javax.xml.transform, \
+ javax.xml.transform.dom, \
+ javax.xml.transform.sax, \
+ javax.xml.transform.stream, \
+ javax.xml.validation, \
+ javax.xml.xpath, \
+ org.ietf.jgss, \
+ org.omg.CORBA, \
+ org.omg.CORBA_2_3, \
+ org.omg.CORBA_2_3.portable, \
+ org.omg.CORBA.DynAnyPackage, \
+ org.omg.CORBA.ORBPackage, \
+ org.omg.CORBA.portable, \
+ org.omg.CORBA.TypeCodePackage, \
+ org.omg.CosNaming, \
+ org.omg.CosNaming.NamingContextExtPackage, \
+ org.omg.CosNaming.NamingContextPackage, \
+ org.omg.Dynamic, \
+ org.omg.DynamicAny, \
+ org.omg.DynamicAny.DynAnyFactoryPackage, \
+ org.omg.DynamicAny.DynAnyPackage, \
+ org.omg.IOP, \
+ org.omg.IOP.CodecFactoryPackage, \
+ org.omg.IOP.CodecPackage, \
+ org.omg.Messaging, \
+ org.omg.PortableInterceptor, \
+ org.omg.PortableInterceptor.ORBInitInfoPackage, \
+ org.omg.PortableServer, \
+ org.omg.PortableServer.CurrentPackage, \
+ org.omg.PortableServer.POAManagerPackage, \
+ org.omg.PortableServer.POAPackage, \
+ org.omg.PortableServer.portable, \
+ org.omg.PortableServer.ServantLocatorPackage, \
+ org.omg.SendingContext, \
+ org.omg.stub.java.rmi, \
+ org.omg.stub.javax.management.remote.rmi, \
+ org.w3c.dom, \
+ org.w3c.dom.bootstrap, \
+ org.w3c.dom.css, \
+ org.w3c.dom.events, \
+ org.w3c.dom.html, \
+ org.w3c.dom.ls, \
+ org.w3c.dom.ranges, \
+ org.w3c.dom.stylesheets, \
+ org.w3c.dom.traversal, \
+ org.w3c.dom.views, \
+ org.xml.sax, \
+ org.xml.sax.ext, \
+ org.xml.sax.helpers
+
+# Standard package set.  Note that:
+#   - javax.transaction* is exported with a mandatory attribute 
+#   - javax.activation, javax.annotation*, javax.jws*, javax.script*, javax.xml.bind*, javax.xml.soap, javax.xml.ws* packages are not exported
+jre-1.6= \
+ com.sun.org.apache.xalan.internal.xsltc.trax, \
+ com.sun.org.apache.xerces.internal.dom, \
+ com.sun.org.apache.xerces.internal.jaxp, \
+ com.sun.org.apache.xerces.internal.xni, \
+ com.sun.jndi.ldap, \
+ javax.accessibility, \
+# javax.activation, \
+ javax.activity, \
+# javax.annotation, \
+# javax.annotation.processing, \
+ javax.crypto, \
+ javax.crypto.interfaces, \
+ javax.crypto.spec, \
+ javax.imageio, \
+ javax.imageio.event, \
+ javax.imageio.metadata, \
+ javax.imageio.plugins.bmp, \
+ javax.imageio.plugins.jpeg, \
+ javax.imageio.spi, \
+ javax.imageio.stream, \
+# javax.jws, \
+# javax.jws.soap, \
+ javax.lang.model, \
+ javax.lang.model.element, \
+ javax.lang.model.type, \
+ javax.lang.model.util, \
+ javax.management, \
+ javax.management.loading, \
+ javax.management.modelmbean, \
+ javax.management.monitor, \
+ javax.management.openmbean, \
+ javax.management.relation, \
+ javax.management.remote, \
+ javax.management.remote.rmi, \
+ javax.management.timer, \
+ javax.naming, \
+ javax.naming.directory, \
+ javax.naming.event, \
+ javax.naming.ldap, \
+ javax.naming.spi, \
+ javax.net, \
+ javax.net.ssl, \
+ javax.print, \
+ javax.print.attribute, \
+ javax.print.attribute.standard, \
+ javax.print.event, \
+ javax.rmi, \
+ javax.rmi.CORBA, \
+ javax.rmi.ssl, \
+ javax.security.auth, \
+ javax.security.auth.callback, \
+ javax.security.auth.kerberos, \
+ javax.security.auth.login, \
+ javax.security.auth.spi, \
+ javax.security.auth.x500, \
+ javax.security.cert, \
+ javax.security.sasl, \
+ javax.sound.midi, \
+ javax.sound.midi.spi, \
+ javax.sound.sampled, \
+ javax.sound.sampled.spi, \
+ javax.sql, \
+ javax.sql.rowset, \
+ javax.sql.rowset.serial, \
+ javax.sql.rowset.spi, \
+ javax.swing, \
+ javax.swing.border, \
+ javax.swing.colorchooser, \
+ javax.swing.event, \
+ javax.swing.filechooser, \
+ javax.swing.plaf, \
+ javax.swing.plaf.basic, \
+ javax.swing.plaf.metal, \
+ javax.swing.plaf.multi, \
+ javax.swing.plaf.synth, \
+ javax.swing.table, \
+ javax.swing.text, \
+ javax.swing.text.html, \
+ javax.swing.text.html.parser, \
+ javax.swing.text.rtf, \
+ javax.swing.tree, \
+ javax.swing.undo, \
+ javax.tools, \
+ javax.transaction; javax.transaction.xa; partial=true; mandatory:=partial, \
+ javax.xml, \
+# javax.xml.bind, \
+# javax.xml.bind.annotation, \
+# javax.xml.bind.annotation.adapters, \
+# javax.xml.bind.attachment, \
+# javax.xml.bind.helpers, \
+# javax.xml.bind.util, \
+ javax.xml.crypto, \
+ javax.xml.crypto.dom, \
+ javax.xml.crypto.dsig, \
+ javax.xml.crypto.dsig.dom, \
+ javax.xml.crypto.dsig.keyinfo, \
+ javax.xml.crypto.dsig.spec, \
+ javax.xml.datatype, \
+ javax.xml.namespace, \
+ javax.xml.parsers, \
+# javax.xml.soap, \
+# javax.xml.stream, \
+# javax.xml.stream.events, \
+# javax.xml.stream.util, \
+ javax.xml.transform, \
+ javax.xml.transform.dom, \
+ javax.xml.transform.sax, \
+ javax.xml.transform.stax, \
+ javax.xml.transform.stream, \
+ javax.xml.validation, \
+# javax.xml.ws, \
+# javax.xml.ws.handler, \
+# javax.xml.ws.handler.soap, \
+# javax.xml.ws.http, \
+# javax.xml.ws.soap, \
+# javax.xml.ws.spi, \
+ javax.xml.xpath, \
+ org.ietf.jgss, \
+ org.omg.CORBA, \
+ org.omg.CORBA_2_3, \
+ org.omg.CORBA_2_3.portable, \
+ org.omg.CORBA.DynAnyPackage, \
+ org.omg.CORBA.ORBPackage, \
+ org.omg.CORBA.portable, \
+ org.omg.CORBA.TypeCodePackage, \
+ org.omg.CosNaming, \
+ org.omg.CosNaming.NamingContextExtPackage, \
+ org.omg.CosNaming.NamingContextPackage, \
+ org.omg.Dynamic, \
+ org.omg.DynamicAny, \
+ org.omg.DynamicAny.DynAnyFactoryPackage, \
+ org.omg.DynamicAny.DynAnyPackage, \
+ org.omg.IOP, \
+ org.omg.IOP.CodecFactoryPackage, \
+ org.omg.IOP.CodecPackage, \
+ org.omg.Messaging, \
+ org.omg.PortableInterceptor, \
+ org.omg.PortableInterceptor.ORBInitInfoPackage, \
+ org.omg.PortableServer, \
+ org.omg.PortableServer.CurrentPackage, \
+ org.omg.PortableServer.POAManagerPackage, \
+ org.omg.PortableServer.POAPackage, \
+ org.omg.PortableServer.portable, \
+ org.omg.PortableServer.ServantLocatorPackage, \
+ org.omg.SendingContext, \
+ org.omg.stub.java.rmi, \
+ org.omg.stub.javax.management.remote.rmi, \
+ org.w3c.dom, \
+ org.w3c.dom.bootstrap, \
+ org.w3c.dom.css, \
+ org.w3c.dom.events, \
+ org.w3c.dom.html, \
+ org.w3c.dom.ls, \
+ org.w3c.dom.ranges, \
+ org.w3c.dom.stylesheets, \
+ org.w3c.dom.traversal, \
+ org.w3c.dom.views, \
+ org.w3c.dom.xpath, \
+ org.xml.sax, \
+ org.xml.sax.ext, \
+ org.xml.sax.helpers
diff --git a/trunk/assembly/src/main/filtered-resources/etc/org.apache.karaf.features.cfg b/trunk/assembly/src/main/filtered-resources/etc/org.apache.karaf.features.cfg
new file mode 100644
index 0000000..046c353
--- /dev/null
+++ b/trunk/assembly/src/main/filtered-resources/etc/org.apache.karaf.features.cfg
@@ -0,0 +1,29 @@
+################################################################################
+#
+#    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/apache-karaf/${karaf.version}/xml/features,mvn:org.apache.servicemix.nmr/apache-servicemix-nmr/${servicemix.nmr.version}/xml/features,mvn:org.apache.servicemix/apache-servicemix/${version}/xml/features,mvn:org.apache.camel.karaf/apache-camel/${camel.version}/xml/features,mvn:org.apache.ode/ode-jbi-karaf/${ode.version}/xml/features,mvn:org.apache.activemq/activemq-karaf/${activemq.version}/xml/features
+
+#
+# Comma separated list of features to install at startup
+#
+featuresBoot=config,activemq-broker,camel,camel-activemq,jbi-cluster,war,servicemix-cxf-bc,servicemix-file,servicemix-ftp,servicemix-http,servicemix-jms,servicemix-mail,servicemix-smpp,servicemix-snmp,servicemix-vfs,servicemix-bean,servicemix-camel,servicemix-cxf-se,servicemix-drools,servicemix-eip,servicemix-osworkflow,servicemix-quartz,servicemix-scripting,servicemix-validation,servicemix-saxon,servicemix-wsn2005,servicemix-exec
+
diff --git a/trunk/assembly/src/main/filtered-resources/features.xml b/trunk/assembly/src/main/filtered-resources/features.xml
new file mode 100644
index 0000000..d3341aa
--- /dev/null
+++ b/trunk/assembly/src/main/filtered-resources/features.xml
@@ -0,0 +1,356 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<features>
+    <repository>mvn:org.apache.karaf/apache-karaf/${karaf.version}/xml/features</repository>
+    <repository>mvn:org.apache.servicemix.nmr/apache-servicemix-nmr/${servicemix.nmr.version}/xml/features</repository>
+    <repository>mvn:org.apache.camel.karaf/apache-camel/${camel.version}/xml/features</repository>
+    <feature name="connector" version="${version}">
+        <feature version="${aries.transaction.version}">transaction</feature>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-j2ee-connector_1.5_spec/${geronimo-j2ee-connector.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.components/geronimo-connector/${geronimo-connector.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/${geronimo-jms.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-servlet_3.0_spec/${geronimo-servlet.version}</bundle>
+        <bundle>mvn:org.springframework/spring-tx/${spring.version}</bundle>
+        <bundle>mvn:org.springframework/spring-beans/${spring.version}</bundle>
+        <bundle>mvn:org.springframework/spring-context/${spring.version}</bundle>
+        <bundle>mvn:org.springframework/spring-aop/${spring.version}</bundle>
+    </feature>
+    <feature name="cxf" version="${cxf.version}">
+        <feature>transaction</feature>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.activation-api-1.1/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-annotation_1.0_spec/${geronimo-annotation.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-ws-metadata_2.0_spec/${geronimo-ws-metadata.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.saaj-api-1.3/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxb-api-${jaxb.api.version}/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxws-api-${jaxws-api.version}/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.stax-api-1.0/${servicemix.specs.version}</bundle>
+        <bundle>mvn:javax.mail/mail/${javax.mail.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.asm/${asm.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.fastinfoset/${fastinfoset.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jaxb-impl/${jaxb-impl.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.neethi/${neethi.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.saaj-impl/${saaj-impl.bundle.version}</bundle>
+        <bundle>mvn:org.codehaus.woodstox/stax2-api/${woodstox.stax2-api.version}</bundle>
+        <bundle>mvn:org.codehaus.woodstox/woodstox-core-asl/${woodstox.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.wsdl4j/${wsdl4j.bundle.version}</bundle>
+        <bundle>mvn:org.apache.ws.commons.schema/XmlSchema/${xmlschema.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlresolver/${xmlresolver.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xerces/${xerces.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.bcel/${bcel.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xalan/${xalan.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jsr311-api-1.1/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlsec/${xmlsec.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.opensaml/${opensaml.bundle.version}</bundle>
+        <bundle>mvn:org.apache.ws.security/wss4j/${wss4j.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlbeans/${xmlbeans.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-lang/${commons-lang.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-collections/${commons-collections.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.oro/${oro.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.velocity/${velocity.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.abdera/${abdera.bundle.version}</bundle>
+        <bundle>mvn:commons-codec/commons-codec/${commons-codec.bundle.version}</bundle>
+        <bundle>mvn:org.codehaus.jettison/jettison/${jettison.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jdom/${jdom.bundle.version}</bundle>
+        <bundle>mvn:org.apache.ws.commons.axiom/axiom-impl/${axiom.version}</bundle>
+        <bundle>mvn:org.apache.ws.commons.axiom/axiom-api/${axiom.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-servlet_3.0_spec/${geronimo-servlet.version}</bundle>
+        <bundle>mvn:org.apache.cxf/cxf-bundle/${cxf.version}</bundle>
+    </feature>
+    <feature name="cxf-osgi" version="${version}">
+        <feature version="${cxf.version}">cxf</feature>
+        <feature version="${karaf.version}">war</feature>
+    </feature>
+    <feature name="cxf-jaxrs" version="${version}">
+        <feature version="${version}">cxf-osgi</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.abdera/${abdera.bundle.version}</bundle>
+        <bundle>mvn:org.codehaus.jettison/jettison/${jettison.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlbeans/${xmlbeans.bundle.version}</bundle>
+    </feature>
+    <feature name="cxf-nmr" version="${version}">
+        <feature version="${cxf.version}">cxf</feature>
+        <feature version="${servicemix.nmr.version}">nmr</feature>
+        <bundle>mvn:org.apache.servicemix.cxf/org.apache.servicemix.cxf.transport.nmr/${version}</bundle>
+        <bundle>mvn:org.apache.servicemix.cxf/org.apache.servicemix.cxf.binding.nmr/${version}</bundle>
+    </feature>
+    <feature name="camel-nmr" version="${version}">
+        <feature version="${camel.version}">camel</feature>
+        <feature version="${servicemix.nmr.version}">nmr</feature>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxws-api-${jaxws-api.version}/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-ws-metadata_2.0_spec/${geronimo-ws-metadata.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.saaj-api-1.3/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.camel/org.apache.servicemix.camel.component/${version}</bundle>
+    </feature>
+    <feature name="camel-activemq" version="${version}">
+        <feature version="${activemq.version}">activemq</feature>
+        <feature version="${camel.version}">camel-jms</feature>
+        <bundle>mvn:org.apache.activemq/activemq-camel/${activemq.version}</bundle>
+    </feature>
+
+    <!--
+      -
+      -  Examples
+      -
+    -->
+
+    <feature name="examples-cxf-osgi" version="${version}">
+        <feature version="${version}">cxf-osgi</feature>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jbi-api-1.0/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-utils/${servicemix-utils.version}</bundle>
+        <bundle>mvn:org.springframework/spring-beans/${spring.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.examples/cxf-osgi/${version}</bundle>
+    </feature>
+    <feature name="examples-cxf-jaxrs" version="${version}">
+        <feature version="${version}">cxf-jaxrs</feature>
+        <bundle>mvn:org.springframework/spring-beans/${spring.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-httpclient/${commons-httpclient.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.examples/cxf-jaxrs/${version}</bundle>
+    </feature>
+    <feature name="examples-cxf-nmr" version="${version}">
+        <feature version="${version}">cxf-nmr</feature>
+        <bundle>mvn:org.springframework/spring-beans/${spring.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.examples/cxf-nmr/${version}</bundle>
+    </feature>
+    <feature name="examples-camel-osgi" version="${version}">
+        <feature version="${camel.version}">camel</feature>
+        <bundle>mvn:org.apache.servicemix.examples/camel-osgi/${version}</bundle>
+    </feature>
+    <feature name="examples-camel-blueprint" version="${version}">
+        <feature version="${camel.version}">camel-blueprint</feature>
+        <bundle>mvn:org.apache.servicemix.examples/camel-blueprint/${version}</bundle>
+    </feature>
+    <feature name="examples-camel-nmr" version="${version}">
+        <feature version="${version}">camel-nmr</feature>
+        <bundle>mvn:org.apache.servicemix.examples/camel-nmr/${version}</bundle>
+    </feature>
+    <feature name="examples-camel-nmr-blueprint" version="${version}">
+        <feature version="${version}">camel-nmr</feature>
+        <feature version="${camel.version}">camel-blueprint</feature>
+        <bundle>mvn:org.apache.servicemix.examples/camel-nmr-blueprint/${version}</bundle>
+    </feature>
+    <feature name="examples-cxf-camel-nmr" version="${version}">
+        <feature version="${version}">camel-nmr</feature>
+        <feature version="${version}">cxf-nmr</feature>
+        <bundle>mvn:org.springframework/spring-beans/${spring.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.examples/cxf-camel-nmr/${version}</bundle>
+    </feature>
+    <feature name="examples-cxf-ws-addressing" version="${version}">
+        <feature>cxf-osgi</feature>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jbi-api-1.0/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-utils/${servicemix-utils.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.examples/cxf-ws-addressing/${version}</bundle>
+        <bundle>mvn:org.springframework/spring-beans/${spring.version}</bundle>
+    </feature>
+    <feature name="examples-cxf-wsdl-first-osgi-package" version="${version}">
+        <feature version="${servicemix-cxf-bc.version}">servicemix-cxf-bc</feature>
+        <feature version="${servicemix-cxf-se.version}">servicemix-cxf-se</feature>
+        <bundle>mvn:org.springframework/spring-beans/${spring.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.examples.cxf-wsdl-first-osgi-package/wsdl-first-cxfbc-bundle/${version}</bundle>
+        <bundle>mvn:org.apache.servicemix.examples.cxf-wsdl-first-osgi-package/wsdl-first-cxfse-bundle/${version}</bundle>
+    </feature>
+    <feature name="examples-cxf-ws-security-osgi" version="${version}">
+        <feature>cxf-osgi</feature>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jbi-api-1.0/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-utils/${servicemix-utils.version}</bundle>
+        <bundle>mvn:org.springframework/spring-beans/${spring.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.examples/cxf-ws-security-osgi/${version}</bundle>
+    </feature>
+    <feature name="examples-cxf-ws-rm" version="${version}">
+        <bundle>mvn:org.apache.servicemix.examples/cxf-ws-rm/${version}</bundle>
+    </feature>
+
+    <!--
+      -
+      -  JBI Components
+      -
+    -->
+
+    <feature name="servicemix-shared" version="${servicemix-shared.version}">
+        <feature version="${servicemix.nmr.version}">jbi</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.wsdl4j/${wsdl4j.bundle.version}</bundle>
+        <bundle>mvn:org.apache.xbean/xbean-spring/${xbean.version}</bundle>
+        <bundle>mvn:org.apache.xbean/xbean-classloader/${xbean.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-utils/${servicemix-utils.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-common/${servicemix-shared.version}</bundle>
+    </feature>
+    <feature name="servicemix-cxf-bc" version="${servicemix-cxf-bc.version}">
+        <feature version="${servicemix-shared.version}">servicemix-shared</feature>
+        <feature version="${cxf.version}">cxf</feature>
+        <bundle>mvn:org.eclipse.jetty/jetty-util/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-io/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-http/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-client/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-continuation/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-jmx/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-server/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-security/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-servlet/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-servlets/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-xml/${jetty.version}</bundle>
+        <bundle>mvn:org.eclipse.jetty/jetty-webapp/${jetty.version}</bundle>
+        <bundle>mvn:org.springframework/spring-tx/${spring.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/${geronimo-jms.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-soap2/${servicemix-shared.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-cxf-bc/${servicemix-cxf-bc.version}</bundle>
+    </feature>
+    <feature name="servicemix-file" version="${servicemix-file.version}">
+        <feature version="${servicemix-shared.version}">servicemix-shared</feature>
+        <bundle>mvn:org.apache.servicemix/servicemix-file/${servicemix-file.version}</bundle>
+    </feature>
+    <feature name="servicemix-ftp" version="${servicemix-ftp.version}">
+        <feature version="${servicemix-shared.version}">servicemix-shared</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.oro/${oro.bundle.version}</bundle>
+        <bundle>mvn:commons-net/commons-net/${commons-net.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-pool/${commons-pool.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-ftp/${servicemix-ftp.version}</bundle>
+    </feature>
+    <feature name="servicemix-http" version="${servicemix-http.version}">
+        <feature version="${servicemix-shared.version}">servicemix-shared</feature>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-servlet_3.0_spec/${geronimo-servlet.version}</bundle>
+        <bundle>mvn:commons-codec/commons-codec/${commons-codec.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-httpclient/${commons-httpclient.bundle.version}</bundle>
+        <bundle>mvn:org.apache.ws.commons.schema/XmlSchema/${xmlschema.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlsec/${xmlsec.bundle.version}</bundle>
+        <bundle>mvn:org.apache.ws.security/wss4j/${wss4j.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jetty/${jetty.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-soap/${servicemix-shared.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-soap2/${servicemix-shared.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-http/${servicemix-http.version}</bundle>
+    </feature>
+    <feature name="servicemix-jms" version="${servicemix-jms.version}">
+        <feature version="${servicemix-shared.version}">servicemix-shared</feature>
+        <bundle>mvn:org.apache.ws.commons.schema/XmlSchema/${xmlschema.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlsec/${xmlsec.bundle.version}</bundle>
+        <bundle>mvn:org.apache.ws.security/wss4j/${wss4j.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-soap/${servicemix-shared.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-soap2/${servicemix-shared.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-j2ee-connector_1.5_spec/${geronimo-j2ee-connector.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/${geronimo-jms.version}</bundle>
+        <bundle>mvn:org.springframework/spring-jms/${spring.version}</bundle>
+        <bundle>mvn:org.springframework/spring-tx/${spring.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-jms/${servicemix-jms.version}</bundle>
+    </feature>
+    <feature name="servicemix-mail" version="${servicemix-mail.version}">
+        <feature version="${servicemix-shared.version}">servicemix-shared</feature>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.activation-api-1.1/${servicemix.specs.version}</bundle>
+        <bundle>mvn:javax.mail/mail/${javax.mail.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-mail/${servicemix-mail.version}</bundle>
+    </feature>
+    <feature name="servicemix-bean" version="${servicemix-bean.version}">
+        <feature version="${servicemix-shared.version}">servicemix-shared</feature>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-annotation_1.0_spec/${geronimo-annotation.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-bean/${servicemix-bean.version}</bundle>
+    </feature>
+    <feature name="servicemix-camel" version="${servicemix-camel.version}">
+        <feature version="${servicemix-shared.version}">servicemix-shared</feature>
+        <feature version="${camel.version}">camel</feature>
+        <bundle>mvn:org.apache.servicemix/servicemix-camel/${servicemix-camel.version}</bundle>
+    </feature>
+    <feature name="servicemix-drools" version="${servicemix-drools.version}">
+        <feature version="${servicemix-shared.version}">servicemix-shared</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jdt-core/${jdt-core.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.antlr-runtime/${antlr-runtime.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.drools/${drools.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.mvel/${mvel.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-drools/${servicemix-drools.version}</bundle>
+    </feature>
+    <feature name="servicemix-cxf-se" version="${servicemix-cxf-se.version}">
+        <feature version="${servicemix-shared.version}">servicemix-shared</feature>
+        <feature version="${cxf.version}">cxf</feature>
+        <bundle>mvn:org.apache.cxf/cxf-rt-bindings-jbi/${cxf.version}</bundle>
+        <bundle>mvn:org.apache.cxf/cxf-rt-transports-jbi/${cxf.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-cxf-se/${servicemix-cxf-se.version}</bundle>
+    </feature>
+    <feature name="servicemix-eip" version="${servicemix-eip.version}">
+        <feature version="${servicemix-shared.version}">servicemix-shared</feature>
+        <bundle>mvn:org.apache.servicemix/servicemix-eip/${servicemix-eip.version}</bundle>
+    </feature>
+    <feature name="servicemix-osworkflow" version="${servicemix-osworkflow.version}">
+        <feature version="${servicemix-shared.version}">servicemix-shared</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.antlr/${antlr.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-collections/${commons-collections.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.quartz/${quartz.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.oscore/${oscore.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.propertyset/${propertyset.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.osworkflow/${osworkflow.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-osworkflow/${servicemix-osworkflow.version}</bundle>
+    </feature>
+    <feature name="servicemix-quartz" version="${servicemix-quartz.version}">
+        <feature version="${servicemix-shared.version}">servicemix-shared</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-collections/${commons-collections.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.quartz/${quartz.bundle.version}</bundle>
+        <bundle>mvn:org.springframework/spring-context-support/${spring.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-quartz/${servicemix-quartz.version}</bundle>
+    </feature>
+    <feature name="servicemix-scripting" version="${servicemix-scripting.version}">
+        <feature version="${servicemix-shared.version}">servicemix-shared</feature>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.scripting-api-1.0/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.asm/${asm.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.antlr/${antlr2.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.groovy/${groovy.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.rhino/${rhino.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jruby/${jruby.bundle.version}</bundle>
+        <bundle>mvn:com.google.code.scriptengines/scriptengines-groovy/${scriptengines.version}</bundle>
+        <bundle>mvn:com.google.code.scriptengines/scriptengines-javascript/${scriptengines.version}</bundle>
+        <bundle>mvn:com.google.code.scriptengines/scriptengines-jruby/${scriptengines.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-scripting/${servicemix-scripting.version}</bundle>
+    </feature>
+    <feature name="servicemix-validation" version="${servicemix-validation.version}">
+        <feature version="${servicemix-shared.version}">servicemix-shared</feature>
+        <bundle>mvn:org.apache.servicemix/servicemix-validation/${servicemix-validation.version}</bundle>
+    </feature>
+    <feature name="servicemix-saxon" version="${servicemix-saxon.version}">
+        <feature version="${servicemix-shared.version}">servicemix-shared</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.saxon/${saxon.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-saxon/${servicemix-saxon.version}</bundle>
+    </feature>
+    <feature name="servicemix-wsn2005" version="${servicemix-wsn2005.version}">
+        <feature version="${servicemix-shared.version}">servicemix-shared</feature>
+        <feature version="${activemq.version}">activemq</feature>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-ws-metadata_2.0_spec/${geronimo-ws-metadata.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.saaj-api-1.3/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxb-api-${jaxb.api.version}/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxws-api-${jaxws-api.version}/${servicemix.specs.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jaxb-impl/${jaxb-impl.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-wsn2005/${servicemix-wsn2005.version}</bundle>
+    </feature>
+    <feature name="servicemix-snmp" version="${servicemix-snmp.version}">
+        <feature version="${servicemix-shared.version}">servicemix-shared</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.snmp4j/${snmp4j.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-snmp/${servicemix-snmp.version}</bundle>
+    </feature>
+    <feature name="servicemix-vfs" version="${servicemix-vfs.version}">
+        <feature version="${servicemix-shared.version}">servicemix-shared</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-vfs/${commons-vfs.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-vfs/${servicemix-vfs.version}</bundle>
+    </feature>
+    <feature name="servicemix-smpp" version="${servicemix-smpp.version}">
+        <feature version="${servicemix-shared.version}">servicemix-shared</feature>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsmpp/${jsmpp.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix/servicemix-smpp/${servicemix-smpp.version}</bundle>
+    </feature>
+    <feature name="servicemix-exec" version="${servicemix-exec.version}">
+        <feature version="${servicemix-shared.version}">servicemix-shared</feature>
+        <bundle>mvn:org.apache.servicemix/servicemix-exec/${servicemix-exec.version}</bundle>
+    </feature>
+
+    <!-- Default broker configuration -->
+    <feature name="activemq-broker" version="${version}">
+        <feature version="${activemq.version}">activemq-blueprint</feature>
+        <bundle>blueprint:file:etc/activemq-broker.xml</bundle>
+    </feature>
+</features>
diff --git a/trunk/assembly/src/main/filtered-resources/pom.xml b/trunk/assembly/src/main/filtered-resources/pom.xml
new file mode 100644
index 0000000..e43182e
--- /dev/null
+++ b/trunk/assembly/src/main/filtered-resources/pom.xml
@@ -0,0 +1,52 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.features</groupId>
+        <artifactId>features</artifactId>
+        <version>${project.version}</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.examples</groupId>
+    <artifactId>examples</artifactId>
+    <packaging>pom</packaging>
+    <version>${project.version}</version>
+    <name>Apache ServiceMix Examples</name>
+
+    <modules>
+        <module>bridge</module>
+        <module>bridge-camel</module>
+        <module>camel</module>
+        <module>cxf-wsdl-first</module>
+        <module>camel-nmr</module>
+        <module>camel-osgi</module>
+        <module>cxf-camel-nmr</module>
+        <module>cxf-nmr</module>
+        <module>cxf-osgi</module>
+        <module>cxf-ws-addressing</module>
+        <module>cxf-jaxrs</module>
+        <module>cxf-wsdl-first-osgi-package</module>
+        <module>cxf-ws-security-osgi</module>
+        <module>cxf-ws-rm</module> 
+   </modules>
+
+</project>
diff --git a/trunk/branding/pom.xml b/trunk/branding/pom.xml
new file mode 100644
index 0000000..f7f6c39
--- /dev/null
+++ b/trunk/branding/pom.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.features</groupId>
+        <artifactId>features</artifactId>
+        <version>4.3.0</version>
+    </parent>
+
+    <artifactId>org.apache.servicemix.features.branding</artifactId>
+    <packaging>bundle</packaging>
+    <name>Apache ServiceMix :: Features :: Branding Support</name>
+    <description>Branding for Apache ServiceMix features</description>
+
+    <build>
+        <resources>
+            <resource>
+                <directory>${project.basedir}/src/main/resources</directory>
+                <filtering>true</filtering>
+                <includes>
+                    <include>**/*</include>
+                </includes>
+            </resource>
+        </resources>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <configuration>
+                    <instructions>
+                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
+                        <Bundle-Description>${project.description}</Bundle-Description>
+                        <Import-Package>*</Import-Package>
+                        <Private-Package>!*</Private-Package>
+                        <Export-Package>
+                            org.apache.karaf.branding        
+                        </Export-Package>
+                        <Spring-Context>*;publish-context:=false</Spring-Context>
+                    </instructions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/trunk/branding/src/main/resources/org/apache/karaf/branding/branding.properties b/trunk/branding/src/main/resources/org/apache/karaf/branding/branding.properties
new file mode 100644
index 0000000..5bbf7f0
--- /dev/null
+++ b/trunk/branding/src/main/resources/org/apache/karaf/branding/branding.properties
@@ -0,0 +1,32 @@
+################################################################################
+#
+#    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.
+#
+################################################################################
+
+welcome = \
+\u001B[36m ____                  _          __  __ _      \u001B[0m\n\
+\u001B[36m/ ___|  ___ _ ____   _(_) ___ ___|  \\/  (_)_  __\u001B[0m\n\
+\u001B[36m\\___ \\ / _ \\ '__\\ \\ / / |/ __/ _ \\ |\\/| | \\ \\/ /\u001B[0m\n\
+\u001B[36m ___) |  __/ |   \\ V /| | (_|  __/ |  | | |>  < \u001B[0m\n\
+\u001B[36m|____/ \\___|_|    \\_/ |_|\\___\\___|_|  |_|_/_/\\_\\\u001B[0m\n\
+\n\
+\u001B[1m  Apache ServiceMix\u001B[0m (${pom.version})\n\
+\n\
+Hit '\u001B[1m<tab>\u001B[0m' for a list of available commands\n\
+   and '\u001B[1m[cmd] --help\u001B[0m' for help on a specific command.\n
+Hit '<ctrl-d>' or 'osgi:shutdown' to shutdown ServiceMix.\n
+
diff --git a/trunk/camel/pom.xml b/trunk/camel/pom.xml
new file mode 100644
index 0000000..56a046d
--- /dev/null
+++ b/trunk/camel/pom.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.features</groupId>
+        <artifactId>features</artifactId>
+        <version>4.3.0</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.camel</groupId>
+    <artifactId>camel</artifactId>
+    <packaging>pom</packaging>
+    <name>Apache ServiceMix :: Features :: Camel Support</name>
+
+    <modules>
+        <module>servicemix-camel</module>
+    </modules>
+
+</project>
diff --git a/trunk/camel/servicemix-camel/pom.xml b/trunk/camel/servicemix-camel/pom.xml
new file mode 100644
index 0000000..fc4def4
--- /dev/null
+++ b/trunk/camel/servicemix-camel/pom.xml
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+    <!--
+    
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.camel</groupId>
+        <artifactId>camel</artifactId>
+        <version>4.3.0</version>
+    </parent>
+
+    <artifactId>org.apache.servicemix.camel.component</artifactId>
+    <packaging>bundle</packaging>
+    <name>Apache ServiceMix :: Features :: Camel Support :: Component</name>
+    <description>Apache Camel component tight integrated in the NMR</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.servicemix.nmr</groupId>
+            <artifactId>org.apache.servicemix.nmr.osgi</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.nmr</groupId>
+            <artifactId>org.apache.servicemix.nmr.core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-spring</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-cxf</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.apache.cxf</groupId>
+                    <artifactId>cxf-rt-core</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.cxf</groupId>
+                    <artifactId>cxf-rt-transports-http</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.cxf</groupId>
+                    <artifactId>cxf-rt-transports-http-jetty</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.cxf</groupId>
+                    <artifactId>cxf-rt-transports-local</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.cxf</groupId>
+                    <artifactId>cxf-rt-frontend-simple</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.cxf</groupId>
+                    <artifactId>cxf-rt-frontend-jaxws</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.cxf</groupId>
+                    <artifactId>cxf-rt-management</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.cxf</groupId>
+                    <artifactId>cxf-testutils</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.cxf</groupId>
+                    <artifactId>cxf-tools-common</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.cxf</groupId>
+                    <artifactId>cxf-rt-frontend-jaxrs</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-jetty</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-http</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-testutils</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-bundle</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>bouncycastle</groupId>
+            <artifactId>bcprov-jdk14</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-jaxws_2.2_spec</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>xfire</groupId>
+            <artifactId>opensaml</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.xml.parsers</groupId>
+            <artifactId>jaxp-ri</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.woodstox</groupId>
+            <artifactId>woodstox-core-asl</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-core</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <configuration>
+                    <instructions>
+                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
+                        <Import-Package>*</Import-Package>
+                        <Export-Package>org.apache.servicemix.camel.nmr*</Export-Package>
+                        <Bundle-Description>${project.description}</Bundle-Description>
+                    </instructions>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <forkMode>pertest</forkMode>
+                    <systemProperties>
+                        <property>
+                            <name>javax.xml.parsers.DocumentBuilderFactory</name>
+                            <value>com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl</value>
+                        </property>
+                        <property>
+                            <name>javax.xml.datatype.DatatypeFactory</name>
+                            <value>com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl</value>
+                        </property>
+                        <property>
+                            <name>javax.xml.parsers.SAXParserFactory</name>
+                            <value>com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl</value>
+                        </property>
+                        <property>
+                            <name>javax.xml.stream.XMLInputFactory</name>
+                            <value>com.ctc.wstx.stax.WstxInputFactory</value>
+                        </property>
+                        <property>
+                            <name>javax.xml.stream.XMLOutputFactory</name>
+                            <value>com.ctc.wstx.stax.WstxOutputFactory</value>
+                        </property>
+                    </systemProperties>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.cxf</groupId>
+                <artifactId>cxf-codegen-plugin</artifactId>
+                <version>${cxf.version}</version>
+                <executions>
+                    <execution>
+                        <id>generate-test-sources</id>
+                        <phase>generate-sources</phase>
+                        <configuration>
+                            <sourceRoot>${basedir}/target/generated/test/java</sourceRoot>
+                            <wsdlOptions>
+                                <wsdlOption>
+                                    <wsdl>${basedir}/src/test/resources/person.wsdl</wsdl>
+                                    <extraargs>
+                                        <extraarg>-verbose</extraarg>
+                                    </extraargs>
+                                </wsdlOption>
+                            </wsdlOptions>
+                        </configuration>
+                        <goals>
+                            <goal>wsdl2java</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <!-- exclude generated class from cxf-codegen-plugin -->
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>cobertura-maven-plugin</artifactId>
+                <configuration>
+                    <instrumentation>
+                        <excludes>
+                            <exclude>org/apache/servicemix/samples/wsdl_first/*.class</exclude>
+                        </excludes>
+                    </instrumentation>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/trunk/camel/servicemix-camel/src/main/java/org/apache/servicemix/camel/nmr/ServiceMixBinding.java b/trunk/camel/servicemix-camel/src/main/java/org/apache/servicemix/camel/nmr/ServiceMixBinding.java
new file mode 100644
index 0000000..150e4c3
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/main/java/org/apache/servicemix/camel/nmr/ServiceMixBinding.java
@@ -0,0 +1,164 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+
+import javax.activation.DataHandler;
+import javax.security.auth.Subject;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Exchange;
+import org.apache.camel.ExchangePattern;
+import org.apache.camel.Message;
+import org.apache.camel.impl.DefaultExchange;
+import org.apache.camel.impl.DefaultMessage;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.servicemix.nmr.api.Channel;
+import org.apache.servicemix.nmr.api.Pattern;
+
+/**
+ * The binding object will help us to deal with copying between the NMR exchange and camel exchange
+ */
+public class ServiceMixBinding {
+    private final transient Log LOG = LogFactory.getLog(ServiceMixBinding.class);
+    public static final String NMR_MESSAGE = "nmrMessage";
+    public static final String NMR_EXCHANGE = "nmrExchange";
+    public static final String NMR_OPERATION = "nmrOperation";
+    
+    public void copyCamelMessageToNmrMessage(org.apache.servicemix.nmr.api.Message nmrMessage, Message camelMessage) {
+        if (nmrMessage != null && camelMessage != null) {
+            nmrMessage.setBody(camelMessage.getBody());
+            nmrMessage.getHeaders().clear();
+            addNmrHeaders(nmrMessage, camelMessage);
+            nmrMessage.getAttachments().clear();
+            nmrMessage.getAttachments().putAll(camelMessage.getAttachments());
+            //addSecuritySubject(nmrMessage, camelMessage);
+
+            // propagate the security subject
+            if (camelMessage.getHeader(Exchange.AUTHENTICATION, Subject.class) != null) {
+                nmrMessage.setSecuritySubject(camelMessage.getHeader(Exchange.AUTHENTICATION, Subject.class));
+            }
+        }
+    }
+
+    public void copyNmrMessageToCamelMessage(org.apache.servicemix.nmr.api.Message nmrMessage, Message camelMessage) {
+        camelMessage.setBody(nmrMessage.getBody());
+        camelMessage.setHeader(NMR_MESSAGE, nmrMessage);
+        camelMessage.getHeaders().putAll(nmrMessage.getHeaders());
+        addCamelAttachments(nmrMessage, camelMessage);
+
+        // copy the security subject
+        if (nmrMessage.getSecuritySubject() != null) {
+            camelMessage.setHeader(Exchange.AUTHENTICATION, nmrMessage.getSecuritySubject());
+        }
+    }
+    
+    public org.apache.servicemix.nmr.api.Exchange populateNmrExchangeFromCamelExchange(Exchange camelExchange, Channel client)  {
+        org.apache.servicemix.nmr.api.Exchange e = client.createExchange(
+                Pattern.fromWsdlUri(camelExchange.getPattern().getWsdlUri()));
+        e.getProperties().putAll(camelExchange.getProperties());
+        org.apache.servicemix.nmr.api.Message inMessage = e.getIn();
+        copyCamelMessageToNmrMessage(inMessage, camelExchange.getIn());
+        return e;
+                   
+    }
+    
+    
+    public Exchange populateCamelExchangeFromNmrExchange(CamelContext context, org.apache.servicemix.nmr.api.Exchange nmrExchange) {
+        Exchange answer = new DefaultExchange(context);
+        answer.setPattern(ExchangePattern.fromWsdlUri(nmrExchange.getPattern().getWsdlUri()));
+        
+        // copy the nmrExchange's properties
+        answer.getProperties().putAll(nmrExchange.getProperties());
+
+        org.apache.servicemix.nmr.api.Message inMessage = nmrExchange.getIn();
+        if (inMessage != null) {
+            Message message = new DefaultMessage();
+            copyNmrMessageToCamelMessage(inMessage, message);
+            answer.setIn(message);
+        }
+        
+        answer.setProperty(NMR_EXCHANGE, nmrExchange);
+        if (nmrExchange != null && nmrExchange.getOperation() != null) {
+            answer.setProperty(NMR_OPERATION, nmrExchange.getOperation().toString());
+        }
+      
+        return answer;
+    }
+    
+    
+    
+    protected void addNmrHeaders(org.apache.servicemix.nmr.api.Message nmrMessage, Message camelMessage) {
+        // get headers from the Camel in message
+        Set<Map.Entry<String, Object>> entries = camelMessage.getHeaders().entrySet();
+        for (Map.Entry<String, Object> entry : entries) {
+            // skip the camel header's normalized Message
+            if (entry.getKey().equals(NMR_MESSAGE)) {
+                continue;
+            }
+            //check if value is Serializable, and if value is Map or collection,
+            //just exclude it since the entry of it may not be Serializable as well
+            if (entry.getValue() instanceof Serializable
+                    && !(entry.getValue() instanceof Map)
+                    && !(entry.getValue() instanceof Collection)) {
+                nmrMessage.setHeader(entry.getKey(), entry.getValue());
+            }
+        }
+       
+    }
+  
+    protected void addCamelAttachments(org.apache.servicemix.nmr.api.Message nmrMessage, Message camelMessage) {
+        Set<String> names = nmrMessage.getAttachments().keySet();
+        for (String name : names) {
+            if (nmrMessage.getAttachment(name) instanceof DataHandler) {
+                DataHandler dataHandler = (DataHandler) nmrMessage.getAttachment(name);             
+                camelMessage.addAttachment(name, dataHandler);
+            } else {
+                LOG.warn("NMR attachement of " + name + " is not a instance of DataHandler, cannot copy it into Camel message.");
+            }
+        }
+        
+    }
+
+    /**
+     * Extract the underlying NMR {@link org.apache.servicemix.nmr.api.Message} for a Camel message
+     *
+     * @param message the Camel Message
+     * @return the corresponding NMR message
+     */
+    public org.apache.servicemix.nmr.api.Message getNmrMessage(Message message) {
+        if (message.getHeader(NMR_MESSAGE) != null) {
+            return message.getHeader(NMR_MESSAGE, org.apache.servicemix.nmr.api.Message.class);
+        }
+        return null;
+    }
+
+    /**
+     * Extract the NMR Exchange from the Camel Exchange
+     *
+     * @param camel the Camel Exchange
+     * @return the NMR Exchange
+     */
+    public org.apache.servicemix.nmr.api.Exchange extractNmrExchange(Exchange camel) {
+        return (org.apache.servicemix.nmr.api.Exchange) camel.getProperties().remove(NMR_EXCHANGE);
+    }
+}
diff --git a/trunk/camel/servicemix-camel/src/main/java/org/apache/servicemix/camel/nmr/ServiceMixComponent.java b/trunk/camel/servicemix-camel/src/main/java/org/apache/servicemix/camel/nmr/ServiceMixComponent.java
new file mode 100644
index 0000000..00145aa
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/main/java/org/apache/servicemix/camel/nmr/ServiceMixComponent.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr;
+
+import java.util.Map;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.impl.DefaultComponent;
+import org.apache.servicemix.nmr.api.NMR;
+
+/**
+ * A camel component to bridge ServiceMix NMR with Camel.
+ */
+public class ServiceMixComponent extends DefaultComponent {
+
+    private NMR nmr;
+    private ServiceMixBinding binding;
+    
+    public ServiceMixComponent() {
+    }
+   
+    public ServiceMixBinding getBinding() {
+        if (binding == null) {
+            binding = new ServiceMixBinding();
+        }
+        return binding;
+    }
+
+    public void setBinding(ServiceMixBinding binding) {
+        this.binding = binding;
+    }
+
+    public NMR getNmr() {
+        if (nmr == null) {
+            nmr = getCamelContext().getRegistry().lookup(NMR.class.getName(), NMR.class);
+        }
+        return nmr;
+    }
+
+    public void setNmr(NMR nmr) {
+        this.nmr = nmr;
+    }
+
+    protected Endpoint createEndpoint(String uri, String remaining, Map parameters) throws Exception {
+        return new ServiceMixEndpoint(this, uri, remaining);
+    }
+
+    public void registerEndpoint(org.apache.servicemix.nmr.api.Endpoint endpoint, Map<String, ?> properties) {
+        getNmr().getEndpointRegistry().register(endpoint, properties);
+    }
+
+    public void unregisterEndpoint(org.apache.servicemix.nmr.api.Endpoint endpoint, Map<String, ?> properties) {
+        getNmr().getEndpointRegistry().unregister(endpoint, properties);
+    }
+}
diff --git a/trunk/camel/servicemix-camel/src/main/java/org/apache/servicemix/camel/nmr/ServiceMixConsumer.java b/trunk/camel/servicemix-camel/src/main/java/org/apache/servicemix/camel/nmr/ServiceMixConsumer.java
new file mode 100644
index 0000000..5887675
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/main/java/org/apache/servicemix/camel/nmr/ServiceMixConsumer.java
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr;
+
+import java.util.Map;
+
+import org.apache.camel.AsyncCallback;
+import org.apache.camel.Consumer;
+import org.apache.camel.Processor;
+import org.apache.camel.impl.DefaultConsumer;
+import org.apache.camel.spi.Synchronization;
+import org.apache.servicemix.nmr.api.Channel;
+import org.apache.servicemix.nmr.api.Endpoint;
+import org.apache.servicemix.nmr.api.Exchange;
+import org.apache.servicemix.nmr.api.Status;
+import org.apache.servicemix.nmr.api.service.ServiceHelper;
+
+/**
+ * A {@link Consumer} that receives NMR {@link org.apache.servicemix.nmr.api.Exchange}s and invokes the Camel route
+ */
+public class ServiceMixConsumer extends DefaultConsumer implements org.apache.servicemix.nmr.api.Endpoint, Synchronization {
+
+    private Channel channel;
+
+    public ServiceMixConsumer(ServiceMixEndpoint endpoint, Processor processor) {
+        super(endpoint, processor);
+    }
+
+    public ServiceMixEndpoint getEndpoint() {
+        return (ServiceMixEndpoint) super.getEndpoint();
+    }
+
+    protected void doStart() throws Exception {
+        super.doStart();
+        getEndpoint().getComponent().registerEndpoint(this, createEndpointMap());
+    }
+
+    protected void doStop() throws Exception {
+        getEndpoint().getComponent().unregisterEndpoint(this, createEndpointMap());
+        super.doStop();
+    }
+
+    private Map<String,?> createEndpointMap() {
+        Map<String, Object> result = ServiceHelper.createMap(Endpoint.NAME,
+                                                             getEndpoint().getEndpointName());
+        result.put(Endpoint.CHANNEL_SYNC_DELIVERY, getEndpoint().isSynchronous());
+        return result;
+    }
+
+    public void setChannel(Channel channel) {
+        this.channel = channel;
+    }
+
+    /**
+     * Process an NMR {@link org.apache.servicemix.nmr.api.Exchange} by creating and sending a Camel {@link org.apache.servicemix.nmr.api.Exchange}
+     * through the defined route
+     */
+    public void process(Exchange exchange) {
+        if (exchange.getStatus() == Status.Active) {
+            try {
+                org.apache.camel.Exchange camelExchange = getEndpoint().createExchange(exchange);
+                camelExchange.addOnCompletion(this);
+
+                getAsyncProcessor().process(camelExchange, new AsyncCallback() {
+
+                    public void done(boolean doneSync) {
+                        // this is handled by the onComplete/onFailure method
+                    }
+                });
+            } catch (Exception e) {
+                exchange.setError(e);
+                exchange.setStatus(Status.Error);
+                channel.send(exchange);
+            }
+        }
+    }
+
+    /**
+     * Handle the Camel {@link org.apache.camel.Exchange) response by updating the matching NMR {@link org.apache.servicemix.nmr.api.Exchange}
+     * and finishing the NMR MEP
+     */
+    private void handleCamelResponse(Exchange exchange, org.apache.camel.Exchange camelExchange) {
+        // just copy the camelExchange back to the nmr exchange
+        exchange.getProperties().putAll(camelExchange.getProperties());
+        if (camelExchange.getException() != null) {
+            exchange.setError(camelExchange.getException());
+            exchange.setStatus(Status.Error);
+        } else if (camelExchange.hasOut() && !camelExchange.getOut().isFault()) {
+            getEndpoint().getComponent().getBinding().
+                copyCamelMessageToNmrMessage(exchange.getOut(), camelExchange.getOut());
+        } else if (camelExchange.hasOut() && camelExchange.getOut().isFault()) {
+            getEndpoint().getComponent().getBinding().
+                copyCamelMessageToNmrMessage(exchange.getFault(), camelExchange.getOut());
+        } else {
+            exchange.setStatus(Status.Done);
+        }
+        channel.send(exchange);
+    }
+
+    /*
+     * Handle a successfully completed Camel Exchange
+     */
+    public void onComplete(org.apache.camel.Exchange exchange) {
+        Exchange nmr = getEndpoint().getComponent().getBinding().extractNmrExchange(exchange);
+        handleCamelResponse(nmr, exchange);
+    }
+
+    /*
+     * Handle a Caml exchange failure
+     */
+    public void onFailure(org.apache.camel.Exchange exchange) {
+        Exchange nmr = getEndpoint().getComponent().getBinding().extractNmrExchange(exchange);
+        handleCamelResponse(nmr, exchange);
+    }
+}
diff --git a/trunk/camel/servicemix-camel/src/main/java/org/apache/servicemix/camel/nmr/ServiceMixEndpoint.java b/trunk/camel/servicemix-camel/src/main/java/org/apache/servicemix/camel/nmr/ServiceMixEndpoint.java
new file mode 100644
index 0000000..e14b0f6
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/main/java/org/apache/servicemix/camel/nmr/ServiceMixEndpoint.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr;
+
+import java.util.Map;
+
+import org.apache.camel.impl.DefaultEndpoint;
+import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+import org.apache.camel.Producer;
+import org.apache.camel.Consumer;
+import org.apache.camel.Processor;
+
+/**
+ * A Camel {@link Endpoint} to interact with the ServiceMix NMR from within a Camel route
+ * 
+ * @org.apache.xbean.XBean element="smxEndpoint"
+ */
+public class ServiceMixEndpoint extends DefaultEndpoint {
+
+    private static final String SYNCHRONOUS = "synchronous";
+
+    private String endpointName;
+    private boolean synchronous;
+
+    public ServiceMixEndpoint(ServiceMixComponent component, String uri, String endpointName) {
+        super(uri, component);
+        this.endpointName = endpointName;
+    }
+
+    @Override
+    public void configureProperties(Map<String, Object> options) {
+        synchronous = Boolean.valueOf((String) options.remove(SYNCHRONOUS));
+    }
+
+    public ServiceMixComponent getComponent() {
+        return (ServiceMixComponent)super.getComponent();
+    }
+
+    public boolean isSingleton() {
+        return true;
+    }
+
+    public boolean isSynchronous() {
+        return synchronous;
+    }
+
+    public Producer createProducer() throws Exception {
+        return new ServiceMixProducer(this, getComponent().getNmr());
+    }
+
+    public Consumer createConsumer(Processor processor) throws Exception {
+        return new ServiceMixConsumer(this, processor);
+    }
+
+    public Exchange createExchange(org.apache.servicemix.nmr.api.Exchange nmrExchange) {
+        return getComponent().getBinding().populateCamelExchangeFromNmrExchange(getCamelContext(),
+                                                                                nmrExchange);
+    }
+
+    public void setEndpointName(String endpointName) {
+        this.endpointName = endpointName;
+    }
+
+    public String getEndpointName() {
+        return endpointName;
+    }
+}
diff --git a/trunk/camel/servicemix-camel/src/main/java/org/apache/servicemix/camel/nmr/ServiceMixProducer.java b/trunk/camel/servicemix-camel/src/main/java/org/apache/servicemix/camel/nmr/ServiceMixProducer.java
new file mode 100644
index 0000000..a077170
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/main/java/org/apache/servicemix/camel/nmr/ServiceMixProducer.java
@@ -0,0 +1,201 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr;
+
+import org.apache.camel.AsyncCallback;
+import org.apache.camel.AsyncProcessor;
+import org.apache.camel.impl.DefaultProducer;
+import org.apache.camel.Exchange;
+import org.apache.servicemix.nmr.api.*;
+import org.apache.servicemix.nmr.api.service.ServiceHelper;
+
+import java.util.Collections;
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * A {@link org.apache.camel.Producer} that handles incoming Camel exchanges by sending/receiving an NMR {@link org.apache.camel.Exchange}
+ */
+public class ServiceMixProducer extends DefaultProducer implements Endpoint, AsyncProcessor {
+
+    private static final String TARGET_ENDPOINT_NAME = "TARGET_ENDPOINT_NAME";
+
+    private final Map<String, Continuation> continuations = new ConcurrentHashMap<String, Continuation>();
+    private final NMR nmr;
+
+    private Channel channel;
+
+    public ServiceMixProducer(ServiceMixEndpoint endpoint, NMR nmr) {
+        super(endpoint);
+        this.nmr = nmr;
+    }
+
+    /*
+     * Synchronously process the Camel exchange (using sendSync to send and receive the NMR Exchange)
+     */
+    public void process(Exchange exchange) throws Exception {
+        NMR nmr = getEndpoint().getComponent().getNmr();
+
+        org.apache.servicemix.nmr.api.Exchange e =
+            getEndpoint().getComponent().getBinding().populateNmrExchangeFromCamelExchange(exchange, channel);
+
+        try {
+            e.setTarget(nmr.getEndpointRegistry().lookup(
+                            ServiceHelper.createMap(org.apache.servicemix.nmr.api.Endpoint.NAME,
+                                                    getEndpoint().getEndpointName())));
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+
+        channel.sendSync(e);
+
+        handleResponse(exchange, channel, e);
+    }
+
+    /*
+     * Asynchronously process the Camel exchange (using send to send the NMR Exchange)
+     * (NMR responses will be handled by the {@link #process(org.apache.servicemix.nmr.api.Exchange)} method
+     */
+    public boolean process(Exchange exchange, AsyncCallback asyncCallback) {
+        NMR nmr = getEndpoint().getComponent().getNmr();
+
+        org.apache.servicemix.nmr.api.Exchange e
+                = getEndpoint().getComponent().getBinding().populateNmrExchangeFromCamelExchange(exchange, channel);
+
+        try {
+            e.setTarget(nmr.getEndpointRegistry().lookup(
+                    ServiceHelper.createMap(org.apache.servicemix.nmr.api.Endpoint.NAME,
+                            getEndpoint().getEndpointName())));
+
+            continuations.put(e.getId(), new Continuation(exchange, asyncCallback));
+            channel.send(e);
+
+            return false;
+        } catch (Exception ex) {
+            log.warn("Error occured while sending NMR exchange", ex);
+
+            continuations.remove(e.getId());
+
+            exchange.setException(ex);
+            asyncCallback.done(true);
+            return true;
+        }
+    }
+
+    /**
+     * Handle incoming NMR exchanges (responses to the exchanges sent in {@link #process(org.apache.camel.Exchange, org.apache.camel.AsyncCallback)}
+     */
+    public void process(org.apache.servicemix.nmr.api.Exchange exchange) {
+        Continuation continuation = continuations.remove(exchange.getId());
+
+        if (continuation == null) {
+            log.error("Unknown exchange received: " + exchange);
+        } else {
+            handleResponse(continuation.exchange, channel, exchange);
+            continuation.callback.done(false);
+        }
+    }
+
+    /*
+     * Handle the NMR Exchange by:
+     * - updating the corresponding Camel Exchange
+     * - finishing the NMR Exchange MEP
+     */
+    private void handleResponse(Exchange exchange, Channel client, org.apache.servicemix.nmr.api.Exchange e) {
+        if (e.getError() != null) {
+            handleErrorResponse(exchange, client, e);
+        } else {
+            handleSuccessResponse(exchange, client, e);
+        }
+    }
+
+    private void handleSuccessResponse(Exchange exchange, Channel client, org.apache.servicemix.nmr.api.Exchange e) {
+        if (e.getPattern() != Pattern.InOnly) {
+            exchange.getProperties().putAll(e.getProperties());
+            if (e.getFault().getBody() != null) {
+                exchange.getOut().setFault(true);
+                getEndpoint().getComponent().getBinding().copyNmrMessageToCamelMessage(e.getFault(), exchange.getOut());
+            } else {
+                getEndpoint().getComponent().getBinding().copyNmrMessageToCamelMessage(e.getOut(), exchange.getOut());
+            }
+            e.setStatus(Status.Done);
+            channel.send(e);
+        }
+    }
+
+    private void handleErrorResponse(Exchange camel, Channel client, org.apache.servicemix.nmr.api.Exchange nmr) {
+        camel.setException(nmr.getError());
+    }
+
+    @Override
+    protected void doStart() throws Exception {
+        nmr.getEndpointRegistry().register(this, createEndpointMap());
+        super.doStart();
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        super.doStop();
+        nmr.getEndpointRegistry().unregister(this, createEndpointMap());
+    }
+
+    /**
+     * Access the matching {@link org.apache.servicemix.camel.nmr.ServiceMixEndpoint}
+     */
+    public ServiceMixEndpoint getEndpoint() {
+        return (ServiceMixEndpoint) super.getEndpoint();
+    }
+
+    public void setChannel(Channel channel) {
+        this.channel = channel;
+    }
+
+    /*
+     * Creates the default endpoint map, containing the endpoint name as well as a property referring to the
+     * target endpoint name
+     */
+    private Map<String,Object> createEndpointMap() {
+        return ServiceHelper.createMap(org.apache.servicemix.nmr.api.Endpoint.NAME,
+                ServiceMixProducer.class.getName() + "-" + UUID.randomUUID(),
+                TARGET_ENDPOINT_NAME,
+                getEndpoint().getEndpointName());
+
+    }
+
+    /*
+     * Access an unmodifiable copy of the pending continuations map
+     */
+    protected Map<String, Continuation> getContinuations() {
+        return Collections.unmodifiableMap(continuations);
+    }
+
+    /*
+     * Encapsulates all the information required to continue a Camel {@link Exchange} 
+     */
+    private final class Continuation {
+
+        private final Exchange exchange;
+        private final AsyncCallback callback;
+
+        private Continuation(Exchange exchange, AsyncCallback callback) {
+            super();
+            this.exchange = exchange;
+            this.callback = callback;
+        }
+    }
+}
diff --git a/trunk/camel/servicemix-camel/src/main/resources/META-INF/services/org/apache/camel/component/nmr b/trunk/camel/servicemix-camel/src/main/resources/META-INF/services/org/apache/camel/component/nmr
new file mode 100644
index 0000000..17e2f92
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/main/resources/META-INF/services/org/apache/camel/component/nmr
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+class=org.apache.servicemix.camel.nmr.ServiceMixComponent
diff --git a/trunk/camel/servicemix-camel/src/main/resources/META-INF/services/org/apache/camel/component/smx b/trunk/camel/servicemix-camel/src/main/resources/META-INF/services/org/apache/camel/component/smx
new file mode 100644
index 0000000..17e2f92
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/main/resources/META-INF/services/org/apache/camel/component/smx
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+class=org.apache.servicemix.camel.nmr.ServiceMixComponent
diff --git a/trunk/camel/servicemix-camel/src/main/resources/org/apache/servicemix/camel/nmr/camel-nmr.xml b/trunk/camel/servicemix-camel/src/main/resources/org/apache/servicemix/camel/nmr/camel-nmr.xml
new file mode 100644
index 0000000..439aae8
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/main/resources/org/apache/servicemix/camel/nmr/camel-nmr.xml
@@ -0,0 +1,35 @@
+<?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:osgi="http://www.springframework.org/schema/osgi"
+       xmlns:camel-osgi="http://activemq.apache.org/camel/schema/osgi"
+       xsi:schemaLocation="
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+       http://www.springframework.org/schema/osgi  http://www.springframework.org/schema/osgi/spring-osgi.xsd
+       http://camel.apache.org/schema/spring http://camel.apache.org/camel/schema/spring/camel-spring.xsd
+       http://camel.apache.org/schema/osgi http://camel.apache.org/schema/osgi/camel-osgi.xsd">
+
+    <bean id="nmr" class="org.apache.servicemix.camel.nmr.ServiceMixComponent">
+        <property name="nmr">
+            <osgi:reference interface="org.apache.servicemix.nmr.api.NMR" />
+        </property>
+    </bean>
+
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/AbstractComponentTest.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/AbstractComponentTest.java
new file mode 100644
index 0000000..b3eaead
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/AbstractComponentTest.java
@@ -0,0 +1,136 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.impl.JndiRegistry;
+import org.apache.servicemix.executors.ExecutorFactory;
+import org.apache.servicemix.executors.impl.ExecutorConfig;
+import org.apache.servicemix.executors.impl.ExecutorFactoryImpl;
+import org.apache.servicemix.nmr.api.Channel;
+import org.apache.servicemix.nmr.api.Endpoint;
+import org.apache.servicemix.nmr.api.Exchange;
+import org.apache.servicemix.nmr.api.event.ExchangeListener;
+import org.apache.servicemix.nmr.api.service.ServiceHelper;
+import org.apache.servicemix.nmr.core.InternalEndpointWrapper;
+import org.apache.servicemix.nmr.core.ServiceMix;
+
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * Abstract base class for building NMR component unit tests
+ * - the NMR component is available with URI prefix nmr:
+ * - a client channel to the NMR can be obtained with the {@link #getChannel()} method
+ */
+public abstract class AbstractComponentTest extends ContextTestSupport implements ExchangeListener {
+
+    private ServiceMix nmr;
+    private ServiceMixComponent component;
+    private Channel channel;
+
+    @Override
+    protected void setUp() throws Exception {
+        nmr = new ServiceMix();
+        nmr.setExecutorFactory(createExecutorFactory());
+        nmr.init();
+        
+        nmr.getListenerRegistry().register(this, ServiceHelper.createMap());
+
+        component = new ServiceMixComponent();
+        component.setNmr(nmr);
+
+        super.setUp();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        for (ServiceMixProducer producer : findEndpoints(ServiceMixProducer.class)) {
+            if (producer.getContinuations().size() > 0) {
+                // let's wait for a moment to give the last exchanges the time to get Done
+                Thread.sleep(500);
+            }
+            assertEquals("There should be no more pending Camel exchanges in the producer endpoints",
+                         0, producer.getContinuations().size());
+        }
+
+        nmr.shutdown();
+        super.tearDown();
+    }
+
+    private <E extends Endpoint> List<E> findEndpoints(Class<E> type) {
+        List<E> result = new LinkedList<E>();
+
+        for (Endpoint endpoint : nmr.getEndpointRegistry().getServices()) {
+            if (endpoint instanceof InternalEndpointWrapper) {
+                InternalEndpointWrapper wrapper = (InternalEndpointWrapper) endpoint;
+                if (type.isAssignableFrom(wrapper.getEndpoint().getClass())) {
+                    result.add(type.cast(wrapper.getEndpoint()));
+                }
+            }
+        }
+        return result;
+    }
+
+    /*
+     * Create the ExecutorFactory for the unit test
+     * based on the default configuration used in ServiceMix 4
+     */
+    protected ExecutorFactory createExecutorFactory() {
+        ExecutorFactoryImpl factory = new ExecutorFactoryImpl();
+
+        ExecutorConfig config = factory.getDefaultConfig();
+        config.setCorePoolSize(1);
+        config.setMaximumPoolSize(16);
+        config.setQueueSize(0);
+        config.setBypassIfSynchronous(true);
+
+        return factory;
+    };
+
+    @Override
+    protected JndiRegistry createRegistry() throws Exception {
+        JndiRegistry registry = super.createRegistry();
+        registry.bind("nmr", component);
+        return registry;
+    }
+
+    /**
+     * Get a client channel to access the NMR used for testing
+     *
+     * @return the client channel
+     */
+    protected Channel getChannel() {
+        if (channel == null) {
+            channel = nmr.createChannel();
+        }
+
+        return channel;
+    }
+
+    public void exchangeSent(Exchange exchange) {
+        // graciously do nothing
+    }
+
+    public void exchangeDelivered(Exchange exchange) {
+        // graciously do nothing
+    }
+
+    public void exchangeFailed(Exchange exchange) {
+        // graciously do nothing
+    }
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/AttachmentTest.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/AttachmentTest.java
new file mode 100644
index 0000000..e7944bb
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/AttachmentTest.java
@@ -0,0 +1,167 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr;
+
+import java.io.InputStream;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Proxy;
+import java.lang.reflect.UndeclaredThrowableException;
+
+import javax.activation.DataHandler;
+import javax.mail.util.ByteArrayDataSource;
+import javax.xml.namespace.QName;
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.Holder;
+import javax.xml.ws.soap.SOAPBinding;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.spring.SpringCamelContext;
+import org.apache.camel.test.CamelTestSupport;
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.endpoint.Client;
+import org.apache.cxf.endpoint.ClientImpl;
+import org.apache.cxf.jaxws.JaxWsClientProxy;
+import org.apache.cxf.jaxws.binding.soap.SOAPBindingImpl;
+import org.apache.cxf.jaxws.support.JaxWsEndpointImpl;
+import org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean;
+import org.apache.cxf.mime.TestMtom;
+import org.apache.cxf.service.Service;
+import org.apache.cxf.service.factory.ReflectionServiceFactoryBean;
+import org.apache.cxf.service.model.EndpointInfo;
+import org.springframework.context.support.AbstractXmlApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class AttachmentTest extends CamelTestSupport {
+    
+    protected static final String SERVICE_ADDRESS = "local://smx/attachment";
+    protected static final String ROUTER_ADDRESS = "http://localhost:9036/mime-test";
+    
+    protected static final String SERVICE_CLASS = "serviceClass=org.apache.cxf.mime.TestMtom";
+     
+    
+    
+    
+    public static final QName MTOM_PORT = new QName(
+            "http://cxf.apache.org/mime", "TestMtomPort");
+
+    public static final QName MTOM_SERVICE = new QName(
+            "http://cxf.apache.org/mime", "TestMtomService");
+    
+    protected AbstractXmlApplicationContext applicationContext;
+    
+    
+           
+    
+    @Override
+    protected void setUp() throws Exception {
+        applicationContext = createApplicationContext();
+        super.setUp();        
+        assertNotNull("Should have created a valid spring context", applicationContext);
+
+        startService();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {        
+        if (applicationContext != null) {
+            applicationContext.destroy();
+        }
+        super.tearDown();
+    }
+    
+    protected void startService() {
+        //start a service
+        Object implementor = new MtomImpl();
+        
+        javax.xml.ws.Endpoint.publish(SERVICE_ADDRESS, implementor);
+    }
+    
+   
+  
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            public void configure() {
+                from("cxf:bean:routerEndpoint").to("smx:testEndpoint");
+                from("smx:testEndpoint").to("cxf:bean:serviceEndpoint");
+            }
+        };
+    }
+    
+    @Override
+    protected CamelContext createCamelContext() throws Exception {
+        return SpringCamelContext.springCamelContext(applicationContext);
+    }
+    
+    
+    protected ClassPathXmlApplicationContext createApplicationContext() {
+        return new ClassPathXmlApplicationContext("org/apache/servicemix/camel/spring/mtom.xml");
+    }
+
+    
+    public void testAttachment() throws Exception {  
+        TestMtom mtomPort = createPort(MTOM_SERVICE, MTOM_PORT, TestMtom.class,
+                true);
+        try {
+            
+            Holder<DataHandler> param = new Holder<DataHandler>();
+            
+            param.value = new DataHandler(new ByteArrayDataSource("foobar".getBytes(), 
+                "application/octet-stream"));
+            
+            Holder<String> name = new Holder<String>("call detail");
+            mtomPort.testXop(name, param);
+            assertEquals("call detailfoobar",
+                    name.value);
+            assertNotNull(param.value);
+            InputStream bis = param.value.getDataSource().getInputStream();
+            byte b[] = new byte[10];
+            bis.read(b, 0, 10);
+            String attachContent = new String(b);
+            assertEquals(attachContent, "testfoobar");
+        } catch (UndeclaredThrowableException ex) {
+            throw (Exception) ex.getCause();
+        }        
+                
+    }
+    
+    private <T> T createPort(QName serviceName, QName portName,
+            Class<T> serviceEndpointInterface, boolean enableMTOM)
+        throws Exception {
+        Bus bus = BusFactory.getDefaultBus();
+        ReflectionServiceFactoryBean serviceFactory = new JaxWsServiceFactoryBean();
+        serviceFactory.setBus(bus);
+        serviceFactory.setServiceName(serviceName);
+        serviceFactory.setServiceClass(serviceEndpointInterface);
+        serviceFactory.setWsdlURL(getClass().getResource("/wsdl/mtom_xop.wsdl"));
+        Service service = serviceFactory.create();
+        EndpointInfo ei = service.getEndpointInfo(portName);
+        JaxWsEndpointImpl jaxwsEndpoint = new JaxWsEndpointImpl(bus, service,
+                ei);
+        SOAPBinding jaxWsSoapBinding = new SOAPBindingImpl(ei.getBinding(), jaxwsEndpoint);
+        jaxWsSoapBinding.setMTOMEnabled(enableMTOM);
+
+        Client client = new ClientImpl(bus, jaxwsEndpoint);
+        InvocationHandler ih = new JaxWsClientProxy(client, jaxwsEndpoint
+                .getJaxwsBinding());
+        Object obj = Proxy.newProxyInstance(serviceEndpointInterface
+                .getClassLoader(), new Class[] {serviceEndpointInterface,
+                    BindingProvider.class}, ih);
+        return serviceEndpointInterface.cast(obj);
+    }
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/CamelAsyncRouteTest.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/CamelAsyncRouteTest.java
new file mode 100644
index 0000000..1d48cfa
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/CamelAsyncRouteTest.java
@@ -0,0 +1,130 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.servicemix.nmr.api.Status;
+
+/**
+ * Test case for making sure that the component behaves properly if the Camel route is using
+ * asynchronous elements (e.g. threads or seda queues)
+ */
+public class CamelAsyncRouteTest extends AbstractComponentTest {
+
+    private static final String HANDLED_BY_THREAD = "HandledByThread";
+    
+    private static final int COUNT = 1000;
+    private static final long DELAY = 60000;
+
+    /* Latch to count NMR Done Exchanges */
+    private CountDownLatch done;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        done = new CountDownLatch(COUNT);
+    }
+
+    public void testCamelThreads() throws InterruptedException {
+        expectDefaultMessageCount("mock:sent");
+        expectDefaultMessageCount("mock:threads").whenAnyExchangeReceived(new AssertHandledByCamelThreadProcessor());
+        
+        for (int i = 0 ; i < COUNT ; i++) {
+            template.asyncSendBody("direct:threads", "Simple message body " + i);
+        }
+
+        assertMockEndpointsSatisfied();
+
+        assertTrue("All NMR exchanges should have been marked DONE",
+                   done.await(DELAY, TimeUnit.MILLISECONDS));
+    }
+
+    public void testCamelSeda() throws InterruptedException {
+        expectDefaultMessageCount("mock:sent");
+        expectDefaultMessageCount("mock:seda");
+
+        for (int i = 0 ; i < COUNT ; i++) {
+            template.asyncSendBody("seda:seda", "Simple message body " + i);
+        }
+
+        assertMockEndpointsSatisfied();
+
+        assertTrue("All NMR exchanges should have been marked DONE",
+                   done.await(DELAY, TimeUnit.MILLISECONDS));
+    }
+
+    /*
+     * Configure the mock endpoint to expect {@value #COUNT} messages to arrive in {@value #DELAY}ms
+     */
+    private MockEndpoint expectDefaultMessageCount(String endpoint) {
+        final MockEndpoint mock = getMockEndpoint(endpoint);
+        mock.setResultWaitTime(DELAY);
+        mock.expectedMessageCount(COUNT);
+        return mock;
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+
+            @Override
+            public void configure() throws Exception {
+                from("direct:threads").to("mock:sent").to("nmr:threads");
+                from("nmr:threads")
+                    .threads(5)
+                    .process(new Processor() {
+                        public void process(Exchange exchange) throws Exception {
+                            exchange.setProperty(HANDLED_BY_THREAD, Thread.currentThread());
+                        }
+                    })
+                    .to("mock:threads");
+
+                from("seda:seda?concurrentConsumers=10").to("mock:sent").to("nmr:seda");
+                from("nmr:seda").to("seda:seda-internal?waitForTaskToComplete=Never");
+                from("seda:seda-internal").to("mock:seda");
+
+            }
+        };
+    }
+
+    @Override
+    public void exchangeDelivered(org.apache.servicemix.nmr.api.Exchange exchange) {
+        if (exchange.getStatus().equals(Status.Done)) {
+            done.countDown();
+        }
+    }
+
+    /*
+     * Processor to ensure that the exchange has been handled by a Camel thread instead of an NMR thread
+     */
+    private static final class AssertHandledByCamelThreadProcessor implements Processor {
+
+        public void process(Exchange exchange) throws Exception {
+            Thread thread = exchange.getProperty(HANDLED_BY_THREAD, Thread.class);
+            assertTrue("processor should have been called from the Camel 'threads' thread pool instead of " + thread.getName(),
+                       thread.getName().contains("Camel") && thread.getName().contains("Thread"));
+        }
+
+    }
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/CamelTryCatchTest.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/CamelTryCatchTest.java
new file mode 100644
index 0000000..e67bbd0
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/CamelTryCatchTest.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+
+/**
+ * A very basic NMR test, just testing if the Exchange can flow through the NMR
+ * from one Camel route to the next one
+ */
+public class CamelTryCatchTest extends AbstractComponentTest {
+
+    private static final String REQUEST_MESSAGE = "Simple message body";
+
+    public void testInOnlyTryCatch() throws InterruptedException {
+        MockEndpoint mock = getMockEndpoint("mock:caught");
+        mock.expectedMessageCount(1);
+
+        template.sendBody("direct:inonly", REQUEST_MESSAGE);
+
+        assertMockEndpointsSatisfied();
+    }
+
+    public void testInOutTryCatch() throws InterruptedException {
+        MockEndpoint mock = getMockEndpoint("mock:caught");
+        mock.expectedMessageCount(1);
+
+        template.requestBody("direct:inout", REQUEST_MESSAGE);
+
+        assertMockEndpointsSatisfied();
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+
+            @Override
+            public void configure() throws Exception {
+                from("direct:inonly")
+                    .doTry()
+                        .to("nmr:throwsException")
+                    .doCatch(CustomBusinessException.class)
+                        .to("mock:caught");
+
+                from("direct:inout")
+                    .doTry()
+                        .to("nmr:throwsException")
+                    .doCatch(CustomBusinessException.class)
+                        .to("mock:caught");
+
+                from("nmr:throwsException")
+                    .errorHandler(noErrorHandler())
+                    .throwException(new CustomBusinessException());
+            }
+        };
+    }
+
+    /*
+     * Custom business exception for testing purposes
+     */
+    private static final class CustomBusinessException extends Exception {
+
+    }
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/CxfMessageTest.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/CxfMessageTest.java
new file mode 100644
index 0000000..2528032
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/CxfMessageTest.java
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr;
+
+import java.net.URL;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.Endpoint;
+import javax.xml.ws.Holder;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.CamelSpringTestSupport;
+import org.apache.camel.CamelContext;
+import org.apache.cxf.endpoint.ServerImpl;
+import org.apache.cxf.frontend.ClientProxy;
+import org.apache.cxf.interceptor.LoggingInInterceptor;
+import org.apache.cxf.interceptor.LoggingOutInterceptor;
+import org.apache.servicemix.samples.wsdl_first.Person;
+import org.apache.servicemix.samples.wsdl_first.PersonService;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+
+public class CxfMessageTest extends CamelSpringTestSupport {
+       
+    
+    private ServerImpl server;
+
+    
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();        
+                
+        startService();
+    }
+
+    protected ClassPathXmlApplicationContext createApplicationContext() {
+        return new ClassPathXmlApplicationContext("org/apache/servicemix/camel/spring/CxfMessageBeans.xml");
+    }
+
+    protected void assertValidContext(CamelContext context) {
+        assertNotNull("No context found!", context);
+    }
+
+    protected void startService() {
+         Object implementor = new PersonImpl();
+        String address = "http://localhost:19000/PersonService/";
+        Endpoint.publish(address, implementor);
+    }
+    
+    @Override
+    protected void tearDown() throws Exception {
+        if (server != null) {
+            server.stop();
+        }
+        super.tearDown();
+    }
+  
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            public void configure() {
+                //from(routerEndpointURI).to("smx:testEndpoint");// like what do in binding component
+                //from("smx:testEndpoint").to(serviceEndpointURI);// like what do in se
+            }
+        };
+    }
+    
+    public void testInvokingServiceFromCXFClient() throws Exception {  
+     
+        URL wsdlURL = getClass().getClassLoader().getResource("person.wsdl");
+        
+
+        System.out.println(wsdlURL);
+        PersonService ss = new PersonService(wsdlURL, new QName("http://servicemix.apache.org/samples/wsdl-first", 
+            "PersonService"));
+        Person client = ss.getSoap();
+        ClientProxy.getClient(client).getOutInterceptors().add(new LoggingOutInterceptor());
+        ClientProxy.getClient(client).getInInterceptors().add(new LoggingInInterceptor());
+        Holder<String> personId = new Holder<String>();
+        personId.value = "world";
+        Holder<String> ssn = new Holder<String>();
+        Holder<String> name = new Holder<String>();
+        client.getPerson(personId, ssn, name);
+        assertEquals("we should get the right answer from router", "Bonjour", name.value);
+    }
+    
+        
+    
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ExceptionHandleTest.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ExceptionHandleTest.java
new file mode 100644
index 0000000..25ab6f8
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ExceptionHandleTest.java
@@ -0,0 +1,176 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr;
+
+import java.net.URL;
+import java.util.Map;
+
+import javax.naming.Context;
+import javax.xml.namespace.QName;
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.soap.SOAPBinding;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.cxf.transport.CamelTransportFactory;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.test.CamelTestSupport;
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.frontend.ClientProxy;
+import org.apache.cxf.interceptor.LoggingInInterceptor;
+import org.apache.cxf.interceptor.LoggingOutInterceptor;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.transport.ConduitInitiatorManager;
+import org.apache.hello_world_soap_http.BadRecordLitFault;
+import org.apache.hello_world_soap_http.Greeter;
+import org.apache.hello_world_soap_http.GreeterImpl;
+import org.apache.hello_world_soap_http.NoSuchCodeLitFault;
+import org.apache.hello_world_soap_http.SOAPService;
+import org.apache.servicemix.nmr.api.NMR;
+import org.apache.servicemix.nmr.core.ServiceMix;
+
+
+public class ExceptionHandleTest extends CamelTestSupport {
+    protected static final String ROUTER_ADDRESS = "camel://jetty:http://localhost:19000/SoapContext/SoapPort";
+    protected static final String SERVICE_ADDRESS = "local://smx/hello_world";
+    protected static final String SERVICE_CLASS = "serviceClass=org.apache.hello_world_soap_http.Greeter";
+    private static final String WSDL_LOCATION = "wsdlURL=/wsdl/hello_world.wsdl";
+    private static final String SERVICE_NAME = "serviceName=%7bhttp://apache.org/hello_world_soap_http%7dSOAPService";
+
+    private String routerEndpointURI = "cxf://" + ROUTER_ADDRESS + "?" + SERVICE_CLASS 
+        + "&" + WSDL_LOCATION + "&" + SERVICE_NAME + "&dataFormat=POJO&bus=#Bus";
+    private String serviceEndpointURI = "cxf://" + SERVICE_ADDRESS + "?" + SERVICE_CLASS
+        + "&" + WSDL_LOCATION + "&" + SERVICE_NAME + "&dataFormat=POJO&bus=#Bus";
+
+    private CamelContext camelContext;
+    private ServiceMixComponent smxComponent;
+    private NMR nmr;
+    private javax.xml.ws.Endpoint endpoint;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();        
+        Object implementor = new GreeterImpl();
+        endpoint = javax.xml.ws.Endpoint.publish(SERVICE_ADDRESS, implementor);
+    }
+    
+    @Override
+    protected void tearDown() throws Exception {
+        if (camelContext != null) {
+            camelContext.stop();
+        }
+        if (endpoint != null) {
+            endpoint.stop();
+        }
+        super.tearDown();
+        // Not sure why we need a timeout here
+        // but if we don't, the jetty server is not fully
+        // stopped, so the next test fails. 
+        Thread.sleep(5000);
+    }
+  
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            public void configure() {
+                errorHandler(noErrorHandler());
+                from(routerEndpointURI).to("smx:testEndpoint");// like what do in binding component
+                from("smx:testEndpoint").to(serviceEndpointURI);// like what do in se
+            }
+        };
+    }
+    
+    protected CamelContext createCamelContext() throws Exception {
+        camelContext = new DefaultCamelContext(createJndiContext());
+        Bus bus = BusFactory.getDefaultBus();
+        CamelTransportFactory camelTransportFactory = (CamelTransportFactory) bus.getExtension(ConduitInitiatorManager.class)
+            .getConduitInitiator(CamelTransportFactory.TRANSPORT_ID);
+        camelTransportFactory.setCamelContext(camelContext);
+        smxComponent = new ServiceMixComponent();
+        nmr = new ServiceMix();
+        ((ServiceMix)nmr).init();
+        smxComponent.setNmr(nmr);
+        camelContext.addComponent("smx", smxComponent);
+        return camelContext;
+    }
+
+    @Override
+    protected Context createJndiContext() throws Exception {
+        Context ctx = super.createJndiContext();
+        ctx.bind("Bus", BusFactory.getDefaultBus());
+        return ctx;    //To change body of overridden methods use File | Settings | File Templates.
+    }
+
+    public void testException() throws Exception {
+        URL wsdl = getClass().getResource("/wsdl/hello_world.wsdl");
+        assertNotNull(wsdl);
+        SOAPService service1 = new SOAPService(wsdl, new QName(
+                "http://apache.org/hello_world_soap_http", "SOAPService"));
+        QName endpoint = new QName("http://apache.org/hello_world_soap_http", "SoapPort");
+        service1.addPort(endpoint, 
+                SOAPBinding.SOAP12HTTP_BINDING, "http://localhost:19000/SoapContext/SoapPort");
+        Greeter greeter = service1.getPort(endpoint, Greeter.class);
+        ClientProxy.getClient(greeter).getInInterceptors().add(new LoggingInInterceptor());
+        ClientProxy.getClient(greeter).getOutInterceptors().add(new LoggingOutInterceptor());
+        String ret = greeter.sayHi();
+        assertEquals(ret, "Bonjour");
+        String noSuchCodeFault = "NoSuchCodeLitFault";
+        String badRecordFault = "BadRecordLitFault";
+        try {
+            greeter.testDocLitFault(noSuchCodeFault);
+            fail("Should have thrown NoSuchCodeLitFault exception");
+        } catch (NoSuchCodeLitFault nslf) {
+            assertNotNull(nslf.getFaultInfo());
+            assertNotNull(nslf.getFaultInfo().getCode());
+        } 
+        
+        try {
+            greeter.testDocLitFault(badRecordFault);
+            fail("Should have thrown BadRecordLitFault exception");
+        } catch (BadRecordLitFault brlf) {                
+            BindingProvider bp = (BindingProvider)greeter;
+            Map<String, Object> responseContext = bp.getResponseContext();
+            Integer responseCode = (Integer) responseContext.get(Message.RESPONSE_CODE);
+            assertEquals(500, responseCode.intValue());                
+            assertNotNull(brlf.getFaultInfo());
+            assertEquals("BadRecordLitFault", brlf.getFaultInfo());
+        }
+    } 
+    
+    public void testOneway() throws Exception {
+        URL wsdl = getClass().getResource("/wsdl/hello_world.wsdl");
+        assertNotNull(wsdl);
+        SOAPService service1 = new SOAPService(wsdl, new QName(
+                "http://apache.org/hello_world_soap_http", "SOAPService"));
+        QName endpoint = new QName("http://apache.org/hello_world_soap_http", "SoapPort");
+        service1.addPort(endpoint, 
+                SOAPBinding.SOAP12HTTP_BINDING, "http://localhost:19000/SoapContext/SoapPort");
+        Greeter greeter = service1.getPort(endpoint, Greeter.class);
+        ClientProxy.getClient(greeter).getInInterceptors().add(new LoggingInInterceptor());
+        ClientProxy.getClient(greeter).getOutInterceptors().add(new LoggingOutInterceptor());
+        greeter.greetMeOneWay("test oneway");
+        // Need to sleep a while as Camel is using Async Engine, 
+        // we need to make sure the camel context is not shutdown rightly.
+        Thread.sleep(1000); 
+    }
+    
+    public void testGetTransportFactoryFromBus() throws Exception {
+        Bus bus = BusFactory.getDefaultBus();
+        assertNotNull(bus.getExtension(ConduitInitiatorManager.class)
+            .getConduitInitiator(CamelTransportFactory.TRANSPORT_ID));
+    }
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/HelloService.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/HelloService.java
new file mode 100644
index 0000000..ebddb7f
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/HelloService.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicemix.camel.nmr;
+
+public interface HelloService {
+    String sayHello();
+
+    void ping();
+
+    String echo(String text);
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/HelloServiceImpl.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/HelloServiceImpl.java
new file mode 100644
index 0000000..77bd20e
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/HelloServiceImpl.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicemix.camel.nmr;
+
+public class HelloServiceImpl implements HelloService {
+    public String echo(String text) {        
+        System.out.println("call for echo with " + text);
+        return text + " echo";
+    }
+
+    public void ping() {
+
+    }
+
+    public String sayHello() {
+        return "hello";
+    }
+}
+
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/MtomImpl.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/MtomImpl.java
new file mode 100644
index 0000000..b231cbc
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/MtomImpl.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.activation.DataHandler;
+import javax.jws.WebService;
+import javax.mail.util.ByteArrayDataSource;
+import javax.xml.ws.Holder;
+
+import org.apache.cxf.mime.types.XopStringType;
+
+@WebService(serviceName = "TestMtomService", 
+        portName = "TestMtomPort", 
+        targetNamespace = "http://cxf.apache.org/mime", 
+        endpointInterface = "org.apache.cxf.mime.TestMtom",
+            wsdlLocation = "testutils/mtom_xop.wsdl")
+public class MtomImpl {
+    public void testXop(Holder<String> name, Holder<DataHandler> attachinfo) {
+        
+        try {
+            InputStream bis = attachinfo.value.getDataSource().getInputStream();
+            byte b[] = new byte[6];
+            bis.read(b, 0, 6);
+            String attachContent = new String(b);
+            name.value = name.value + attachContent;
+            
+            ByteArrayDataSource source = 
+                new ByteArrayDataSource(("test" + attachContent).getBytes(), "application/octet-stream");
+            attachinfo.value = new DataHandler(source);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        
+    }
+    public XopStringType testXopString(XopStringType data) {
+        return data;
+    }
+
+}
+
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/MultipleProducersTest.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/MultipleProducersTest.java
new file mode 100644
index 0000000..6fd392b
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/MultipleProducersTest.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+/**
+ * Test case to ensure that the component can deal with multiple {@link org.apache.servicemix.camel.nmr.ServiceMixProducer}
+ * instances for the same endpoint name being used concurrently.
+ */
+public class MultipleProducersTest extends AbstractComponentTest {
+
+    private static final int COUNT = 100;
+
+    public void testConcurrentlyUsingTheSameProducerName() throws InterruptedException {
+        getMockEndpoint("mock:handler").expectedMessageCount(2 * COUNT);
+
+        ExecutorService executor = Executors.newFixedThreadPool(10);
+
+        for (int i = 0 ; i < 100 ; i++) {
+            executor.execute(new Runnable() {
+                public void run() {
+                    assertEquals("Replying to Guillaume",
+                                 template.requestBody("direct:a", "Guillaume"));
+                }
+            });
+            executor.execute(new Runnable() {
+                public void run() {
+                    assertEquals("Replying to Chris",
+                                 template.requestBody("direct:a", "Chris"));
+                }
+            });
+        }
+
+        assertMockEndpointsSatisfied();
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+
+            @Override
+            public void configure() throws Exception {
+                from("direct:a").to("nmr:handler");
+                from("direct:b").to("nmr:handler");
+
+                from("nmr:handler").setBody(simple("Replying to ${body}")).to("mock:handler");
+            }
+        };
+    }
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/PersonImpl.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/PersonImpl.java
new file mode 100644
index 0000000..4676e9a
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/PersonImpl.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr;
+
+import javax.jws.WebService;
+import javax.xml.ws.Holder;
+
+import org.apache.servicemix.samples.wsdl_first.Person;
+import org.apache.servicemix.samples.wsdl_first.UnknownPersonFault;
+
+@WebService(serviceName = "PersonService",
+        targetNamespace = "http://servicemix.apache.org/samples/wsdl-first",
+        endpointInterface = "org.apache.servicemix.samples.wsdl_first.Person")
+public class PersonImpl implements Person {
+
+    public void getPerson(Holder<String> personId, Holder<String> ssn,
+            Holder<String> name) throws UnknownPersonFault {
+        System.out.println("the server is invoked ");
+        if (personId.value == null || personId.value.length() == 0) {
+            org.apache.servicemix.samples.wsdl_first.types.UnknownPersonFault
+                fault = new org.apache.servicemix.samples.wsdl_first.types.UnknownPersonFault();
+            fault.setPersonId(personId.value);
+            throw new UnknownPersonFault(null, fault);
+        }
+        name.value = "Bonjour";
+        ssn.value = "000-000-0000";
+    }
+
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/SecuritySubjectTest.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/SecuritySubjectTest.java
new file mode 100644
index 0000000..ca89ed9
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/SecuritySubjectTest.java
@@ -0,0 +1,151 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.ExchangePattern;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+
+import javax.security.auth.Subject;
+import java.security.Principal;
+
+/**
+ * Test case to ensure the Camel NMR component is capable of conveying security information provided by Camel
+ */
+public class SecuritySubjectTest extends AbstractComponentTest {
+
+    private static final String REQUEST_MESSAGE = "Simple message body";
+    private static final String RESPONSE_MESSAGE = "Simple message reply";
+
+    private static final Principal CLARK_KENT = new PrincipalImpl("Clark Kent");
+    private static final Principal SUPERMAN = new PrincipalImpl("Superman");
+
+    /*
+     * Test case for conveying security subject information in an InOnly MEP
+     */
+    public void testInOnlyWithSecuritySubject() throws Exception {
+        Subject subject = createSubject(CLARK_KENT);
+
+        MockEndpoint mock = getMockEndpoint("mock:simple");
+        mock.expectedBodiesReceived(REQUEST_MESSAGE);
+
+        template.sendBodyAndHeader("direct:simple", REQUEST_MESSAGE,
+                Exchange.AUTHENTICATION, subject);
+
+        assertMockEndpointsSatisfied();
+    }
+
+    /*
+     * Test case for conveying security subject information in an InOut MEP
+     */
+    public void testInOutWithSecuritySubject() throws Exception {
+        final Subject subject = createSubject(CLARK_KENT);
+
+        Exchange result = template.request("direct:simple", new Processor() {
+            public void process(Exchange exchange) throws Exception {
+                exchange.getIn().setBody(REQUEST_MESSAGE);
+                exchange.getIn().setHeader(Exchange.AUTHENTICATION, subject);
+            }
+        });
+
+        assertSecuritySubject(SUPERMAN, result.getOut().getHeader(Exchange.AUTHENTICATION, Subject.class));
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+
+            @Override
+            public void configure() throws Exception {
+                from("direct:simple").to("nmr:simple");
+                from("nmr:simple").process(assertSecuritySubject()).to("mock:simple");
+            }
+        };
+    }
+
+    /*
+     * Build a simple {@link Processor} to ensure our exchange contains the correct security information
+     */
+    private Processor assertSecuritySubject() {
+        return new Processor() {
+            public void process(Exchange exchange) throws Exception {
+                Subject subject = exchange.getIn().getHeader(Exchange.AUTHENTICATION, Subject.class);
+                assertSecuritySubject(CLARK_KENT, subject);
+
+                if (ExchangePattern.InOut.equals(exchange.getPattern())) {
+                    // wow, Clark Kent is Superman, who would have thought that?
+                    exchange.getOut().copyFrom(exchange.getIn());
+                    exchange.getOut().setBody(RESPONSE_MESSAGE);
+                    exchange.getOut().setHeader(Exchange.AUTHENTICATION, createSubject(SUPERMAN));
+                }
+            }
+        };
+    }
+
+    @Override
+    public void exchangeSent(org.apache.servicemix.nmr.api.Exchange exchange) {
+        super.exchangeSent(exchange);
+
+        // let's check the subject inside the NMR as well
+        if (exchange.getIn(false) != null) {
+            assertSecuritySubject(CLARK_KENT, exchange.getIn().getSecuritySubject());
+        }
+        if (exchange.getOut(false) != null) {
+            assertSecuritySubject(SUPERMAN, exchange.getOut().getSecuritySubject());
+        }
+    }
+
+    /*
+    * Ensure that the Subject is valid and matches the principal
+    */
+    private void assertSecuritySubject(Principal expected, Subject subject) {
+        assertNotNull(subject);
+        assertTrue("Subject should have contained " + expected, subject.getPrincipals().contains(expected));
+    }
+
+    /*
+     * Create a new Subject, containing the provided principal information
+     */
+    private Subject createSubject(Principal principal) {
+        final Subject subject = new Subject();
+        subject.getPrincipals().add(principal);
+        return subject;
+    }
+
+    /*
+     * Simple {@link Principal} implementation used for testing
+     */
+    private static final class PrincipalImpl implements Principal {
+
+        private final String name;
+
+        public PrincipalImpl(String name) {
+            super();
+            this.name = name;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public String toString() {
+            return String.format("Principal [%s]", name);
+        }
+    }
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ServiceMixBindingTest.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ServiceMixBindingTest.java
new file mode 100644
index 0000000..4421331
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ServiceMixBindingTest.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr;
+
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.servicemix.nmr.api.Exchange;
+import org.apache.servicemix.nmr.api.Pattern;
+
+/**
+ * Test cases for {@link org.apache.servicemix.camel.nmr.ServiceMixBinding}
+ */
+public class ServiceMixBindingTest extends AbstractComponentTest {
+
+    private static final String KEY = "test.key";
+    private static final String VALUE = "test.value";
+    private static final String MESSAGE = "Message content";
+
+    private ServiceMixBinding binding = new ServiceMixBinding();
+
+    public void testToCamelAndBackToNmr() {
+        Exchange nmr = getChannel().createExchange(Pattern.InOnly);
+        nmr.setProperty(KEY, VALUE);
+        nmr.getIn().setBody(MESSAGE);
+        nmr.getIn().setHeader(KEY, VALUE);
+
+        org.apache.camel.Exchange camel =
+                binding.populateCamelExchangeFromNmrExchange(new DefaultCamelContext(), nmr);
+
+        assertEquals(VALUE, camel.getProperty(KEY));
+        assertEquals(VALUE, camel.getIn().getHeader(KEY));
+        assertEquals(MESSAGE, camel.getIn().getBody());
+        assertEquals("NMR Exchange should be available on the Camel Exchange",
+                     nmr, camel.getProperty(ServiceMixBinding.NMR_EXCHANGE));
+
+        assertSame(nmr, binding.extractNmrExchange(camel));
+        assertNull("NMR Exchange should have been removed from the Camel Exchange",
+                   camel.getProperty(ServiceMixBinding.NMR_EXCHANGE));
+        
+
+    }
+
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ShouldRunSynchronouslyTest.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ShouldRunSynchronouslyTest.java
new file mode 100644
index 0000000..638103d
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ShouldRunSynchronouslyTest.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+
+/**
+ * Test case for the ?synchronous=true setting on a camel consumer endpoint
+ */
+public class ShouldRunSynchronouslyTest extends AbstractComponentTest {
+
+    private static final String HANDLED_BY_THREAD = "HandledByThread";
+
+    public void testProcessingOnSameThread() throws InterruptedException {
+        MockEndpoint mock = getMockEndpoint("mock:simple");
+        mock.expectedBodiesReceived("Simple message body");
+
+        template.sendBody("direct:simple", "Simple message body");
+
+        assertMockEndpointsSatisfied();
+
+        Thread thread = mock.getExchanges().get(0).getProperty(HANDLED_BY_THREAD, Thread.class);
+        assertNotNull(thread);
+        assertEquals("No thread context switching should have occurred",
+                     Thread.currentThread(), thread);
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+
+            @Override
+            public void configure() throws Exception {
+                from("direct:simple").to("nmr:simple");
+                from("nmr:simple?synchronous=true").process(new Processor() {
+
+                    public void process(Exchange exchange) throws Exception {
+                        exchange.setProperty(HANDLED_BY_THREAD, Thread.currentThread());
+                    }
+
+                }).to("mock:simple");
+            }
+        };
+    }
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/SimpleNmrTest.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/SimpleNmrTest.java
new file mode 100644
index 0000000..505465e
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/SimpleNmrTest.java
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+
+/**
+ * A very basic NMR test, just testing if the Exchange can flow through the NMR
+ * from one Camel route to the next one
+ */
+public class SimpleNmrTest extends AbstractComponentTest {
+
+    private static final String REQUEST_MESSAGE = "Simple message body";
+    private static final String RESPONSE_MESSAGE = "Simple message reply";
+
+    public void testSimpleInOnly() throws InterruptedException {
+        MockEndpoint mock = getMockEndpoint("mock:simple");
+        mock.expectedBodiesReceived(REQUEST_MESSAGE);
+
+        template.sendBody("direct:simple", REQUEST_MESSAGE);
+
+        assertMockEndpointsSatisfied();
+    }
+
+    public void testSimpleInOnlyWithMultipleHops() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:hops");
+        mock.expectedBodiesReceived(REQUEST_MESSAGE);
+
+        template.sendBody("direct:hops", REQUEST_MESSAGE);
+
+        assertMockEndpointsSatisfied();        
+    }
+
+    public void testSimpleInOut() throws InterruptedException {
+        MockEndpoint mock = getMockEndpoint("mock:simple");
+        mock.expectedBodiesReceived(REQUEST_MESSAGE);
+
+        final String response = template.requestBody("direct:simple", REQUEST_MESSAGE, String.class);
+
+        assertMockEndpointsSatisfied();
+        assertEquals("Receiving back the reply set by the second route",
+                     RESPONSE_MESSAGE, response);
+    }
+
+    public void testSimpleInOutWithMultipleHops() throws InterruptedException {
+        MockEndpoint mock = getMockEndpoint("mock:hops");
+        mock.expectedBodiesReceived(REQUEST_MESSAGE);
+
+        final String response = template.requestBody("direct:hops", REQUEST_MESSAGE, String.class);
+
+        assertMockEndpointsSatisfied();
+        assertEquals("Receiving back the reply set by the second route",
+                     RESPONSE_MESSAGE, response);
+    }
+
+    public void testSimpleInvalidEndpoint() throws InterruptedException {
+        Exchange exchange = template.send("direct:error", new Processor() {
+            public void process(Exchange exchange) throws Exception {
+                exchange.getIn().setBody(REQUEST_MESSAGE);
+            }
+        });
+
+        assertTrue("Sending to an invalid NMR endpoint should have failed", exchange.isFailed());
+    }
+
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+
+            @Override
+            public void configure() throws Exception {
+                from("direct:simple").to("nmr:simple");
+                from("nmr:simple").to("mock:simple").setBody(constant(RESPONSE_MESSAGE));
+
+                from("direct:hops").to("nmr:hop1");
+                from("nmr:hop1").to("nmr:hop2");
+                from("nmr:hop2").to("mock:hops").setBody(constant(RESPONSE_MESSAGE));
+
+                from("direct:error").to("nmr:invalid-endpoint-name");
+            }
+        };
+    }
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/SmxToCxfSpringTest.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/SmxToCxfSpringTest.java
new file mode 100644
index 0000000..cf729f3
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/SmxToCxfSpringTest.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.spring.SpringCamelContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class SmxToCxfSpringTest extends SmxToCxfTest {
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        assertNotNull("Should have created a valid spring context", applicationContext);
+
+        
+    }
+
+    @Override
+    protected void tearDown() throws Exception {        
+        super.tearDown();
+    }
+    
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            public void configure() {
+                from("cxf:bean:routerEndpoint").to("smx:bean:testEndpoint");
+                from("smx:bean:testEndpoint").to("cxf:bean:serviceEndpoint");              
+            }
+        };
+    }
+    
+    @Override
+    protected CamelContext createCamelContext() throws Exception {
+        return SpringCamelContext.springCamelContext(applicationContext);
+    }
+    
+    
+    protected ClassPathXmlApplicationContext createApplicationContext() {
+        return new ClassPathXmlApplicationContext("org/apache/servicemix/camel/spring/EndpointBeans.xml");
+    }
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/SmxToCxfTest.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/SmxToCxfTest.java
new file mode 100644
index 0000000..e2684e2
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/SmxToCxfTest.java
@@ -0,0 +1,120 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.CamelSpringTestSupport;
+import org.apache.camel.CamelContext;
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.bus.CXFBusFactory;
+import org.apache.cxf.endpoint.ServerImpl;
+import org.apache.cxf.frontend.ClientFactoryBean;
+import org.apache.cxf.frontend.ClientProxyFactoryBean;
+import org.apache.cxf.frontend.ServerFactoryBean;
+import org.springframework.beans.BeansException;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+
+public class SmxToCxfTest extends CamelSpringTestSupport {
+
+    private static final String BUS_BEAN_NAME = "Bus";
+    protected static final String ROUTER_ADDRESS = "http://localhost:19000/router";
+    protected static final String SERVICE_ADDRESS = "local://smx/helloworld";
+    protected static final String SERVICE_CLASS = "serviceClass=org.apache.servicemix.camel.nmr.HelloService";
+
+    private String routerEndpointURI =
+            String.format("cxf://%s?%s&dataFormat=POJO&setDefaultBus=true&bus=#%s", ROUTER_ADDRESS, SERVICE_CLASS, BUS_BEAN_NAME);
+
+    private String serviceEndpointURI =
+            String.format("cxf://%s?%s&dataFormat=POJO&setDefaultBus=true&bus=#%s", SERVICE_ADDRESS, SERVICE_CLASS, BUS_BEAN_NAME);
+
+    private ServerImpl server;
+    private Bus bus;
+
+    @Override
+    protected void setUp() throws Exception {
+        bus = CXFBusFactory.getDefaultBus();
+        
+        super.setUp();        
+                
+        startService();
+    }
+
+    protected ClassPathXmlApplicationContext createApplicationContext() {
+        return new ClassPathXmlApplicationContext("org/apache/servicemix/camel/spring/DummyBean.xml") {
+            @Override
+            public <T> T getBean(String name, Class<T> requiredType) throws BeansException {
+                if (BUS_BEAN_NAME.equals(name)) {
+                    return requiredType.cast(bus);
+                }                
+                return super.getBean(name, requiredType);    //To change body of overridden methods use File | Settings | File Templates.
+            }
+        };
+    }
+
+    protected void assertValidContext(CamelContext context) {
+        assertNotNull("No context found!", context);
+    }
+
+    protected void startService() {
+        //start a service
+        ServerFactoryBean svrBean = new ServerFactoryBean();
+
+        svrBean.setAddress(SERVICE_ADDRESS);
+        svrBean.setServiceClass(HelloService.class);
+        svrBean.setServiceBean(new HelloServiceImpl());
+        svrBean.setBus(CXFBusFactory.getDefaultBus());
+
+        server = (ServerImpl)svrBean.create();
+        server.start();
+    }
+    
+    @Override
+    protected void tearDown() throws Exception {
+        if (server != null) {
+            server.stop();
+        }
+        super.tearDown();
+    }
+  
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            public void configure() {
+                from(routerEndpointURI).to("smx:testEndpoint");// like what do in binding component
+                from("smx:testEndpoint").to(serviceEndpointURI);// like what do in se
+            }
+        };
+    }
+
+    public void testInvokingServiceFromCXFClient() throws Exception {
+        Bus bus = BusFactory.getDefaultBus();
+        
+        ClientProxyFactoryBean proxyFactory = new ClientProxyFactoryBean();
+        ClientFactoryBean clientBean = proxyFactory.getClientFactoryBean();
+        clientBean.setAddress(ROUTER_ADDRESS);        
+        clientBean.setServiceClass(HelloService.class);
+        clientBean.setBus(bus);        
+        
+        HelloService client = (HelloService) proxyFactory.create();
+        String result = client.echo("hello world");
+        assertEquals("we should get the right answer from router", "hello world echo", result);
+    }
+    
+        
+    
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/addressing/GreeterImpl.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/addressing/GreeterImpl.java
new file mode 100644
index 0000000..fcba2c9
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/addressing/GreeterImpl.java
@@ -0,0 +1,222 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr.ws.addressing;
+
+import java.util.concurrent.Future;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.annotation.Resource;
+import javax.jws.WebService;
+import javax.xml.ws.AsyncHandler;
+import javax.xml.ws.Response;
+import javax.xml.ws.WebServiceContext;
+
+import org.apache.cxf.ws.addressing.AddressingProperties;
+import org.apache.hello_world_soap_http.BadRecordLitFault;
+import org.apache.hello_world_soap_http.Greeter;
+import org.apache.hello_world_soap_http.NoSuchCodeLitFault;
+import org.apache.hello_world_soap_http.types.BareDocumentResponse;
+import org.apache.hello_world_soap_http.types.ErrorCode;
+import org.apache.hello_world_soap_http.types.GreetMeLaterResponse;
+import org.apache.hello_world_soap_http.types.GreetMeResponse;
+import org.apache.hello_world_soap_http.types.GreetMeSometimeResponse;
+import org.apache.hello_world_soap_http.types.NoSuchCodeLit;
+import org.apache.hello_world_soap_http.types.SayHiResponse;
+import org.apache.hello_world_soap_http.types.TestDocLitFaultResponse;
+import org.apache.hello_world_soap_http.types.TestNillableResponse;
+
+import static org.apache.cxf.ws.addressing.JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_INBOUND;
+
+
+@WebService(serviceName = "SOAPServiceAddressing", 
+            portName = "SoapPort", 
+            endpointInterface = "org.apache.hello_world_soap_http.Greeter", 
+            targetNamespace = "http://apache.org/hello_world_soap_http",
+            wsdlLocation = "org/apache/servicemix/camel/ws/addressing/hello_world.wsdl")
+public class GreeterImpl implements Greeter, VerificationCache {
+    
+    private String verified;
+    /**
+     * Injectable context.
+     */
+    @Resource
+    private WebServiceContext context;
+
+
+    public String greetMe(String me) {
+        System.out.println("\n\n*** GreetMe called with: " + me + "***\n\n");
+        verifyMAPs();
+        return "Hello " + me;
+    }
+
+    public String greetMeLater(long delay) {
+        System.out.println("\n\n*** GreetMeLater called with: " + delay + "***\n\n");
+        if (delay > 0) {
+            try {
+                Thread.sleep(delay);
+            } catch (InterruptedException ex) {
+                // ignore
+            }
+        }
+        verifyMAPs();
+        return "Hello, finally";
+    }
+
+    public void greetMeOneWay(String requestType) {   
+        System.out.println("\n\n*** GreetMeOneWay called with: " + requestType + "***\n\n");
+        verifyMAPs();
+    }
+
+    public String sayHi() {
+        verifyMAPs();
+        return "sayHi:Bonjour";
+    }
+    
+    public void testDocLitFault(String faultType) throws BadRecordLitFault, NoSuchCodeLitFault {
+        verifyMAPs();
+        if (faultType.equals(BadRecordLitFault.class.getSimpleName())) {
+            throw new BadRecordLitFault("TestBadRecordLit", "BadRecordLitFault");
+        }
+        if (faultType.equals(NoSuchCodeLitFault.class.getSimpleName())) {
+            ErrorCode ec = new ErrorCode();
+            ec.setMajor((short)1);
+            ec.setMinor((short)1);
+            NoSuchCodeLit nscl = new NoSuchCodeLit();
+            nscl.setCode(ec);
+            throw new NoSuchCodeLitFault("TestNoSuchCodeLit", nscl);
+        }
+    }
+
+    public BareDocumentResponse testDocLitBare(String in) {
+        BareDocumentResponse res = new BareDocumentResponse();
+        res.setCompany("Celtix");
+        res.setId(1);
+        return res;
+    }
+
+    private void verifyMAPs() {
+        if (context.getMessageContext() != null) {
+            String property = SERVER_ADDRESSING_PROPERTIES_INBOUND;
+            AddressingProperties maps = (AddressingProperties)
+                context.getMessageContext().get(property);
+            put(WSAddressingTest.verifyMAPs(maps, this));
+        }
+    }
+
+    public String greetMeSometime(String me) {
+        return "greetMeSomeTime:How are you " + me;
+    }
+    
+    public Future<?>  greetMeSometimeAsync(String requestType, 
+                                           AsyncHandler<GreetMeSometimeResponse> asyncHandler) { 
+        return null; 
+        /*not called */
+    }
+    
+    public Response<GreetMeSometimeResponse> greetMeSometimeAsync(String requestType) { 
+        return null; 
+        /*not called */
+    }
+    
+    public Response<TestDocLitFaultResponse> testDocLitFaultAsync(String faultType) {  
+        return null; 
+        /*not called */
+    }
+    
+    public Future<?> testDocLitFaultAsync(String faultType, AsyncHandler ah) {  
+        return null; 
+        /*not called */
+    }
+    
+    public Future<?> testDocLitBareAsync(String bare, AsyncHandler ah) {
+        return null;
+        /* not called */
+    }
+    
+    public Response<BareDocumentResponse> testDocLitBareAsync(String bare) {
+        return null;
+        /* not called */
+    }
+    
+    public Future<?> greetMeAsync(String requestType, AsyncHandler<GreetMeResponse> asyncHandler) { 
+        return null; 
+        /*not called */
+    }
+    
+    public Response<GreetMeResponse> greetMeAsync(String requestType) { 
+        return null; 
+        /*not called */
+    }
+    
+    public Future<?> greetMeLaterAsync(long requestType, AsyncHandler<GreetMeLaterResponse> asyncHandler) { 
+        return null; 
+        /*not called */
+    }
+    
+    public Response<GreetMeLaterResponse> greetMeLaterAsync(long requestType) { 
+        return null; 
+        /*not called */
+    }
+    
+    public Future<?> sayHiAsync(AsyncHandler<SayHiResponse> asyncHandler) { 
+        return null; 
+        /*not called */
+    }
+    
+    public Response<SayHiResponse> sayHiAsync() { 
+        return null; 
+        /*not called */
+    }
+
+    public String testNillable(String nillElem, int intElem) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Response<TestNillableResponse> testNillableAsync(String nillElem,
+                                                            int intElem) {
+        return null;
+    }
+    
+    public Future<?> testNillableAsync(String nillElem, 
+                                       int intElem,
+                                       AsyncHandler<TestNillableResponse> asyncHandler) {
+        return null;
+    }
+    
+    protected boolean verify(Logger log) {
+        if (verified != null) {
+            System.out.println("MAP/Header verification failed: " + verified);
+            log.log(Level.WARNING, 
+                    "MAP/Header verification failed: {0}",
+                    verified);
+        }
+        return verified == null;
+    }
+    
+
+    public void put(String verification) {
+        if (verification != null) {
+            verified = verified == null
+                       ? verification
+                : verified + "; " + verification;
+        }
+    }
+}
+
+
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/addressing/HeaderVerifier.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/addressing/HeaderVerifier.java
new file mode 100644
index 0000000..510b85f
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/addressing/HeaderVerifier.java
@@ -0,0 +1,226 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr.ws.addressing;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPException;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+import org.apache.cxf.binding.soap.SoapMessage;
+import org.apache.cxf.binding.soap.SoapVersion;
+import org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor;
+import org.apache.cxf.headers.Header;
+import org.apache.cxf.helpers.DOMUtils;
+import org.apache.cxf.phase.Phase;
+import org.apache.cxf.ws.addressing.AddressingProperties;
+import org.apache.cxf.ws.addressing.AttributedURIType;
+import org.apache.cxf.ws.addressing.ContextUtils;
+import org.apache.cxf.ws.addressing.Names;
+import org.apache.cxf.ws.addressing.soap.VersionTransformer;
+import org.apache.cxf.ws.addressing.v200408.AttributedURI;
+
+import static org.apache.cxf.ws.addressing.JAXWSAConstants.CLIENT_ADDRESSING_PROPERTIES_INBOUND;
+import static org.apache.cxf.ws.addressing.JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_OUTBOUND;
+
+
+/**
+ * Verifies presence of expected SOAP headers.
+ */
+public class HeaderVerifier extends AbstractSoapInterceptor {
+    VerificationCache verificationCache = new GreeterImpl();
+    String currentNamespaceURI;
+    
+    public HeaderVerifier() {
+        super(Phase.POST_PROTOCOL);
+    }
+    
+    public Set<QName> getUnderstoodHeaders() {
+        return Names.HEADERS;
+    }
+
+    public void handleMessage(SoapMessage message) {
+        mediate(message);
+    }
+
+    public void handleFault(SoapMessage message) {
+        mediate(message);
+    }
+    
+    private void mediate(SoapMessage message) {
+        boolean outgoingPartialResponse = isOutgoingPartialResponse(message);
+        if (outgoingPartialResponse) {
+            addPartialResponseHeader(message);
+        }
+        verify(message, outgoingPartialResponse);
+    }
+
+    private void addPartialResponseHeader(SoapMessage message) {
+        try {
+            // add piggybacked wsa:From header to partial response
+            List<Header> header = message.getHeaders();
+            Document doc = DOMUtils.createDocument();
+            SoapVersion ver = message.getVersion();
+            Element hdr = doc.createElementNS(ver.getHeader().getNamespaceURI(), 
+                ver.getHeader().getLocalPart());
+            hdr.setPrefix(ver.getHeader().getPrefix());
+            
+            marshallFrom("urn:piggyback_responder", hdr, getMarshaller());
+            NodeList nl = hdr.getChildNodes();
+            for (int i = 0; i < nl.getLength(); i++) {
+                Object obj = nl.item(i);
+                if (obj instanceof Element) {
+                    Element elem = (Element) obj;
+                    Header holder = new Header(
+                            new QName(elem.getNamespaceURI(), elem.getLocalName()), 
+                            elem, null);
+                    header.add(holder);
+                }
+            }
+            
+        } catch (Exception e) {
+            verificationCache.put("SOAP header addition failed: " + e);
+            e.printStackTrace();
+        }
+    }
+
+    private void verify(SoapMessage message, boolean outgoingPartialResponse) {
+        try {
+            List<String> wsaHeaders = new ArrayList<String>();
+            List<Header> headers = message.getHeaders();
+            if (headers != null) {
+                recordWSAHeaders(headers,
+                                 wsaHeaders,
+                                 Names.WSA_NAMESPACE_NAME);
+                recordWSAHeaders(headers,
+                                 wsaHeaders,
+                                 VersionTransformer.Names200408.WSA_NAMESPACE_NAME);
+                recordWSAHeaders(headers,
+                                 wsaHeaders,
+                                 WSAddressingTest.CUSTOMER_NAME.getNamespaceURI());
+            }
+            boolean partialResponse = isIncomingPartialResponse(message)
+                                      || outgoingPartialResponse;
+            verificationCache.put(WSAddressingTest.verifyHeaders(wsaHeaders, 
+                                                        partialResponse,
+                                                        isRequestLeg(message)));
+        } catch (SOAPException se) {
+            verificationCache.put("SOAP header verification failed: " + se);
+        }
+    }
+
+    private void recordWSAHeaders(List<Header> headers,
+                                  List<String> wsaHeaders,
+                                  String namespaceURI) {
+        Iterator<Header> iter = headers.iterator();
+        while (iter.hasNext()) {
+            Object obj = iter.next().getObject();
+            if (obj instanceof Element) {
+                Element hdr = (Element) obj;
+                if (namespaceURI.equals(hdr.getNamespaceURI())) {
+                    if (namespaceURI.endsWith("addressing")) {
+                        currentNamespaceURI = namespaceURI;
+                        wsaHeaders.add(hdr.getLocalName());
+                    } else if (WSAddressingTest.CUSTOMER_NAME.getNamespaceURI().equals(namespaceURI)) {
+                        String headerText = hdr.getTextContent();
+                        if (WSAddressingTest.CUSTOMER_KEY.equals(headerText)) {
+                            wsaHeaders.add(hdr.getLocalName());
+                        }
+                    }
+                }
+            }
+            
+        }
+    }
+
+    private boolean isRequestLeg(SoapMessage message) {
+        return (ContextUtils.isRequestor(message) && ContextUtils.isOutbound(message))
+               || (!ContextUtils.isRequestor(message) && !ContextUtils.isOutbound(message));     
+    }
+
+    private boolean isOutgoingPartialResponse(SoapMessage message) {
+        AddressingProperties maps = 
+            (AddressingProperties)message.get(SERVER_ADDRESSING_PROPERTIES_OUTBOUND);
+        return ContextUtils.isOutbound(message)
+               && !ContextUtils.isRequestor(message)
+               && maps != null
+               && Names.WSA_ANONYMOUS_ADDRESS.equals(maps.getTo().getValue());
+    }
+    
+    private boolean isIncomingPartialResponse(SoapMessage message) 
+        throws SOAPException {
+        AddressingProperties maps = 
+            (AddressingProperties)message.get(CLIENT_ADDRESSING_PROPERTIES_INBOUND);
+        return !ContextUtils.isOutbound(message)
+               && ContextUtils.isRequestor(message)
+               && maps != null
+               && Names.WSA_ANONYMOUS_ADDRESS.equals(maps.getTo().getValue());
+    }
+    
+    private Marshaller getMarshaller() throws JAXBException {
+        JAXBContext jaxbContext =
+            VersionTransformer.getExposedJAXBContext(currentNamespaceURI);
+        Marshaller marshaller = jaxbContext.createMarshaller();
+        marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
+        return marshaller;
+    }
+
+    private void marshallFrom(String from, Element header, Marshaller marshaller) 
+        throws JAXBException {
+        if (Names.WSA_NAMESPACE_NAME.equals(currentNamespaceURI)) {
+            String u = "urn:piggyback_responder";
+            AttributedURIType value =
+                org.apache.cxf.ws.addressing.ContextUtils.getAttributedURI(u);
+            marshaller.marshal(
+                new JAXBElement<AttributedURIType>(Names.WSA_FROM_QNAME,
+                                                   AttributedURIType.class,
+                                                   value),
+                header);
+        } else if (VersionTransformer.Names200408.WSA_NAMESPACE_NAME.equals(
+                                                      currentNamespaceURI)) {
+            AttributedURI value =
+                VersionTransformer.Names200408.WSA_OBJECT_FACTORY.createAttributedURI();
+            value.setValue(from);
+            QName qname = new QName(VersionTransformer.Names200408.WSA_NAMESPACE_NAME, 
+                                    Names.WSA_FROM_NAME);
+            marshaller.marshal(
+                new JAXBElement<AttributedURI>(qname,
+                                               AttributedURI.class,
+                                               value),
+                header);
+        }                                                                    
+    }
+    
+    public void setVerificationCache(VerificationCache cache) {
+        verificationCache = cache;
+    }
+    
+    
+}
+
+
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/addressing/MAPVerifier.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/addressing/MAPVerifier.java
new file mode 100644
index 0000000..29990d5
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/addressing/MAPVerifier.java
@@ -0,0 +1,106 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr.ws.addressing;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.cxf.message.Message;
+import org.apache.cxf.phase.AbstractPhaseInterceptor;
+import org.apache.cxf.phase.Phase;
+import org.apache.cxf.ws.addressing.AddressingPropertiesImpl;
+import org.apache.cxf.ws.addressing.ContextUtils;
+import org.apache.cxf.ws.addressing.Names;
+
+import static org.apache.cxf.ws.addressing.JAXWSAConstants.CLIENT_ADDRESSING_PROPERTIES_INBOUND;
+import static org.apache.cxf.ws.addressing.JAXWSAConstants.CLIENT_ADDRESSING_PROPERTIES_OUTBOUND;
+
+
+/**
+ * Verifies presence of MAPs in the context.
+ */
+public class MAPVerifier extends AbstractPhaseInterceptor<Message> {
+    VerificationCache verificationCache = new GreeterImpl();
+    List<String> expectedExposedAs = new ArrayList<String>();
+    private Map<String, Object> mapProperties;
+
+    public MAPVerifier() {
+        super(Phase.POST_LOGICAL);
+        mapProperties = new HashMap<String, Object>();
+        mapProperties.put(WSAddressingTest.INBOUND_KEY, CLIENT_ADDRESSING_PROPERTIES_INBOUND);
+        mapProperties.put(WSAddressingTest.OUTBOUND_KEY, CLIENT_ADDRESSING_PROPERTIES_OUTBOUND);
+    }
+    
+    public void handleMessage(Message message) {
+        verify(message);
+    }
+
+    public void handleFault(Message message) {
+        verify(message);
+    }
+
+    private void verify(Message message) {
+        boolean isOutbound = ContextUtils.isOutbound(message);
+        String mapProperty = 
+            (String)mapProperties.get(isOutbound 
+                                      ? WSAddressingTest.OUTBOUND_KEY
+                                      : WSAddressingTest.INBOUND_KEY);
+        AddressingPropertiesImpl maps = 
+            (AddressingPropertiesImpl)message.get(mapProperty);
+        if (ContextUtils.isRequestor(message)) {
+            if (isOutbound) {
+                String exposeAs = getExpectedExposeAs(false);
+                if (exposeAs != null) {
+                    maps.exposeAs(exposeAs);
+                }
+            } else {
+                String exposeAs = getExpectedExposeAs(true);
+                String expected = exposeAs != null
+                                  ? exposeAs
+                                  : Names.WSA_NAMESPACE_NAME;
+                if (maps.getNamespaceURI() != expected) {
+                    verificationCache.put("Incoming version mismatch"
+                                          + " expected: " + expected
+                                          + " got: " + maps.getNamespaceURI());
+                }
+                exposeAs = null;
+            }
+        }
+        verificationCache.put(WSAddressingTest.verifyMAPs(maps, this));
+    }
+    
+    private String getExpectedExposeAs(boolean remove) {
+        int size = expectedExposedAs.size();
+        return  size == 0 
+                ? null
+                : remove
+                  ? expectedExposedAs.remove(size - 1)
+                  : expectedExposedAs.get(size - 1);
+    }
+    
+    public void setVerificationCache(VerificationCache cache) {
+        verificationCache = cache;
+    }
+    
+    public void addToExpectedExposedAs(String str) {
+        expectedExposedAs.add(str);
+    }
+}
+
+
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/addressing/VerificationCache.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/addressing/VerificationCache.java
new file mode 100644
index 0000000..4292def
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/addressing/VerificationCache.java
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr.ws.addressing;
+
+public interface VerificationCache {
+    void put(String verification);
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/addressing/WSAddressingTest.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/addressing/WSAddressingTest.java
new file mode 100644
index 0000000..59dbc72
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/addressing/WSAddressingTest.java
@@ -0,0 +1,386 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr.ws.addressing;
+
+import java.lang.reflect.UndeclaredThrowableException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.namespace.QName;
+import javax.xml.ws.Endpoint;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.spring.SpringCamelContext;
+import org.apache.camel.test.CamelTestSupport;
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.bus.spring.SpringBusFactory;
+import org.apache.cxf.endpoint.ServerImpl;
+import org.apache.cxf.interceptor.Interceptor;
+import org.apache.cxf.jaxws.ServiceImpl;
+import org.apache.cxf.jaxws.support.ServiceDelegateAccessor;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.ws.addressing.AddressingProperties;
+import org.apache.cxf.ws.addressing.ContextUtils;
+import org.apache.cxf.ws.addressing.EndpointReferenceType;
+import org.apache.cxf.ws.addressing.Names;
+import org.apache.cxf.ws.addressing.ReferenceParametersType;
+import org.apache.cxf.ws.addressing.VersionTransformer;
+import org.apache.cxf.wsdl.EndpointReferenceUtils;
+import org.apache.hello_world_soap_http.BadRecordLitFault;
+import org.apache.hello_world_soap_http.Greeter;
+import org.apache.hello_world_soap_http.NoSuchCodeLitFault;
+import org.apache.hello_world_soap_http.SOAPService;
+import org.apache.servicemix.camel.nmr.ServiceMixComponent;
+import org.apache.servicemix.nmr.api.NMR;
+import org.apache.servicemix.nmr.core.ServiceMix;
+import org.springframework.context.support.AbstractXmlApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class WSAddressingTest extends CamelTestSupport implements VerificationCache {
+    
+    
+    
+    protected static final String SERVICE_ADDRESS = "local://smx/hello_world";
+
+    static final String INBOUND_KEY = "inbound";
+    static final String OUTBOUND_KEY = "outbound";
+    static final String ADDRESS = "http://localhost:9008/SoapContext/SoapPort";
+    static final QName CUSTOMER_NAME =
+        new QName("http://example.org/customer", "CustomerKey", "customer");
+    static final String CUSTOMER_KEY = "Key#123456789";
+
+    private static Bus staticBus;
+
+    
+    private static MAPVerifier mapVerifier;
+    private static HeaderVerifier headerVerifier;
+
+    private static final QName SERVICE_NAME = 
+        new QName("http://apache.org/hello_world_soap_http", "SOAPServiceAddressing");
+    
+    private static final java.net.URL WSDL_LOC;
+    private static final String CONFIG;
+    
+    
+    private static Map<Object, Map<String, String>> messageIDs =
+        new HashMap<Object, Map<String, String>>();
+    protected Greeter greeter;
+    private String verified;
+
+    
+    protected AbstractXmlApplicationContext applicationContext;
+
+    
+    private ServerImpl server;
+    private CamelContext camelContext;
+    private ServiceMixComponent smxComponent;
+    private NMR nmr;
+    private Endpoint endpoint;
+
+    static {
+        CONFIG = "org/apache/servicemix/camel/ws/addressing/addressing" 
+            + (("HP-UX".equals(System.getProperty("os.name"))
+                || "Windows XP".equals(System.getProperty("os.name"))) ? "-hpux" : "")
+            + ".xml";
+        
+        java.net.URL tmp = null;
+        try {
+            tmp = WSAddressingTest.class.getClassLoader().getResource(
+                "org/apache/servicemix/camel/ws/addressing/hello_world.wsdl"
+            );
+        } catch (final Exception e) {
+            e.printStackTrace();
+        }
+        WSDL_LOC = tmp;
+    }
+    
+    @Override
+    protected void setUp() throws Exception {
+        applicationContext = createApplicationContext();
+        super.setUp();        
+        startService();
+        
+        if (staticBus == null) {
+            SpringBusFactory bf = new SpringBusFactory();
+            staticBus = bf.createBus(getConfigFileName());
+        }
+        messageIDs.clear();
+        mapVerifier = new MAPVerifier();
+        headerVerifier = new HeaderVerifier();
+        Interceptor[] interceptors = {mapVerifier, headerVerifier };
+        addInterceptors(staticBus.getInInterceptors(), interceptors);
+        addInterceptors(staticBus.getOutInterceptors(), interceptors);
+        addInterceptors(staticBus.getOutFaultInterceptors(), interceptors);
+        addInterceptors(staticBus.getInFaultInterceptors(), interceptors);
+        
+        EndpointReferenceType target = 
+            EndpointReferenceUtils.getEndpointReference(ADDRESS);
+        ReferenceParametersType params = 
+            ContextUtils.WSA_OBJECT_FACTORY.createReferenceParametersType();
+        JAXBElement<String> param =
+             new JAXBElement<String>(CUSTOMER_NAME, String.class, CUSTOMER_KEY);
+        params.getAny().add(param);
+        target.setReferenceParameters(params);
+        
+        ServiceImpl serviceImpl = 
+            ServiceDelegateAccessor.get(new SOAPService(WSDL_LOC, SERVICE_NAME));
+        greeter = serviceImpl.getPort(target, Greeter.class);
+
+        mapVerifier.verificationCache = this;
+        headerVerifier.verificationCache = this;
+    }
+    
+    protected void startService() {       
+        Object implementor = new GreeterImpl();
+        endpoint = javax.xml.ws.Endpoint.publish(SERVICE_ADDRESS, implementor);
+    }
+    
+    @Override
+    protected void tearDown() throws Exception {
+        if (applicationContext != null) {
+            applicationContext.destroy();
+        }
+        if (server != null) {
+            server.stop();
+        }
+        if (endpoint != null) {
+            endpoint.stop();
+        }
+        Interceptor[] interceptors = {mapVerifier, headerVerifier };
+        removeInterceptors(staticBus.getInInterceptors(), interceptors);
+        removeInterceptors(staticBus.getOutInterceptors(), interceptors);
+        removeInterceptors(staticBus.getOutFaultInterceptors(), interceptors);
+        removeInterceptors(staticBus.getInFaultInterceptors(), interceptors);
+        mapVerifier = null;
+        headerVerifier = null;
+        verified = null;
+        messageIDs.clear();
+        super.tearDown();
+        BusFactory.setDefaultBus(null);
+        Thread.sleep(5000);
+    }
+  
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            public void configure() {
+                // configure the route from spring application
+                errorHandler(noErrorHandler());
+                from("cxf:bean:routerEndpoint").to("smx:testEndpoint");
+                from("smx:testEndpoint").to("cxf:bean:serviceEndpoint");       
+            }
+        };
+    }
+    
+    protected CamelContext createCamelContext() throws Exception {
+        camelContext = SpringCamelContext.springCamelContext(applicationContext);
+        smxComponent = new ServiceMixComponent();
+        nmr = new ServiceMix();
+        ((ServiceMix)nmr).init();
+        smxComponent.setNmr(nmr);
+        camelContext.addComponent("smx", smxComponent);
+        return camelContext;
+    }
+    
+    protected ClassPathXmlApplicationContext createApplicationContext() {
+        return new ClassPathXmlApplicationContext("org/apache/servicemix/camel/ws/addressing/server.xml");
+    }
+
+    
+    public void testImplicitMAPs() throws Exception {
+        try {
+            String greeting = greeter.greetMe("implicit1");
+            assertEquals("unexpected response received from service", 
+                         "Hello implicit1",
+                         greeting);
+            checkVerification();
+            greeting = greeter.greetMe("implicit2");
+            assertEquals("unexpected response received from service", 
+                         "Hello implicit2",
+                         greeting);
+            checkVerification();
+        } catch (UndeclaredThrowableException ex) {
+            throw (Exception)ex.getCause();
+        }
+    }
+    
+    
+    
+    
+    public void testOneway() throws Exception {
+        try {
+            greeter.greetMeOneWay("implicit_oneway1");
+            checkVerification();
+        } catch (UndeclaredThrowableException ex) {
+            throw (Exception)ex.getCause();
+        }
+    }
+
+    public void testApplicationFault() throws Exception {
+        try {
+            greeter.testDocLitFault("BadRecordLitFault");
+            fail("expected fault from service");
+        } catch (BadRecordLitFault brlf) {
+            checkVerification();
+        } catch (UndeclaredThrowableException ex) {
+            throw (Exception)ex.getCause();
+        }
+        String greeting = greeter.greetMe("intra-fault");
+        assertEquals("unexpected response received from service", 
+                     "Hello intra-fault",
+                     greeting);
+        try {
+            greeter.testDocLitFault("NoSuchCodeLitFault");
+            fail("expected NoSuchCodeLitFault");
+        } catch (NoSuchCodeLitFault nsclf) {
+            checkVerification();
+        } catch (UndeclaredThrowableException ex) {
+            throw (Exception)ex.getCause();
+        }
+    }
+    
+
+    public void testVersioning() throws Exception {
+        try {
+            // expect two MAPs instances versioned with 200408, i.e. for both 
+            // the partial and full responses
+            mapVerifier.expectedExposedAs.add(VersionTransformer.Names200408.WSA_NAMESPACE_NAME);
+            mapVerifier.expectedExposedAs.add(VersionTransformer.Names200408.WSA_NAMESPACE_NAME);
+            String greeting = greeter.greetMe("versioning1");
+            assertEquals("unexpected response received from service", 
+                         "Hello versioning1",
+                         greeting);
+            checkVerification();
+            greeting = greeter.greetMe("versioning2");
+            assertEquals("unexpected response received from service", 
+                         "Hello versioning2",
+                         greeting);
+            checkVerification();
+        } catch (UndeclaredThrowableException ex) {
+            throw (Exception)ex.getCause();
+        }
+    }
+
+    protected static String verifyMAPs(AddressingProperties maps,
+            Object checkPoint) {
+        if (maps == null) {
+            return "expected MAPs";
+        }
+        String id = maps.getMessageID().getValue();
+        if (id == null) {
+            return "expected MessageID MAP";
+        }
+        if (!id.startsWith("urn:uuid")) {
+            return "bad URN format in MessageID MAP: " + id;
+        }
+        // ensure MessageID is unique for this check point
+        Map<String, String> checkPointMessageIDs = messageIDs.get(checkPoint);
+        if (checkPointMessageIDs != null) {
+            if (checkPointMessageIDs.containsKey(id)) {
+                // return "MessageID MAP duplicate: " + id;
+                return null;
+            }
+        } else {
+            checkPointMessageIDs = new HashMap<String, String>();
+            messageIDs.put(checkPoint, checkPointMessageIDs);
+        }
+        checkPointMessageIDs.put(id, id);
+        // To
+        if (maps.getTo() == null) {
+            return "expected To MAP";
+        }
+        return null;
+    }
+    
+    public String getConfigFileName() {
+        return CONFIG;
+    }
+    
+    public static void shutdownBus() throws Exception {
+        staticBus.shutdown(true);
+    }
+    
+    private void addInterceptors(List<Interceptor<? extends Message>> chain,
+                                     Interceptor[] interceptors) {
+        for (int i = 0; i < interceptors.length; i++) {
+            chain.add(interceptors[i]);
+        }
+    }
+    
+    private void removeInterceptors(List<Interceptor<? extends Message>> chain,
+                                 Interceptor[] interceptors) {
+        for (int i = 0; i < interceptors.length; i++) {
+            chain.add(interceptors[i]);
+        }
+    }
+
+    public void put(String verification) {
+        if (verification != null) {
+            verified = verified == null
+                       ? verification
+                : verified + "; " + verification;
+        }
+    }
+    
+    /**
+     * Verify presence of expected MAP headers.
+     *
+     * @param wsaHeaders a list of the wsa:* headers present in the SOAP
+     * message
+     * @param parial true if partial response
+     * @return null if all expected headers present, otherwise an error string.
+     */
+    protected static String verifyHeaders(List<String> wsaHeaders,
+                                          boolean partial,
+                                          boolean requestLeg) {
+        
+        String ret = null;
+        if (!wsaHeaders.contains(Names.WSA_MESSAGEID_NAME)) {
+            ret = "expected MessageID header"; 
+        }
+        if (!wsaHeaders.contains(Names.WSA_TO_NAME)) {
+            ret = "expected To header";
+        }
+       
+        if (!(wsaHeaders.contains(Names.WSA_REPLYTO_NAME)
+              || wsaHeaders.contains(Names.WSA_RELATESTO_NAME))) {
+            ret = "expected ReplyTo or RelatesTo header";
+        }
+        if (partial) { 
+            if (!wsaHeaders.contains(Names.WSA_FROM_NAME)) {
+                //ret = "expected From header";
+            }
+        } else {
+            // REVISIT Action missing from full response
+            //if (!wsaHeaders.contains(Names.WSA_ACTION_NAME)) {
+            //    ret = "expected Action header";
+            //}            
+        }
+        if (requestLeg && !(wsaHeaders.contains(CUSTOMER_NAME.getLocalPart()))) {
+            ret = "expected CustomerKey header";
+        }
+        return ret;
+    }
+
+    private void checkVerification() {
+        assertNull("MAP/Header verification failed: " + verified, verified);
+    }
+
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/policy/ConnectionHelper.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/policy/ConnectionHelper.java
new file mode 100644
index 0000000..811e986
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/policy/ConnectionHelper.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr.ws.policy;
+
+import org.apache.cxf.endpoint.Client;
+import org.apache.cxf.frontend.ClientProxy;
+import org.apache.cxf.transport.http.HTTPConduit;
+import org.apache.cxf.transports.http.configuration.ConnectionType;
+import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
+
+public final class ConnectionHelper {
+    private ConnectionHelper() {
+    }
+
+    public static void setKeepAliveConnection(Object proxy, boolean keepAlive) {
+        Client client = ClientProxy.getClient(proxy);
+        HTTPConduit hc = (HTTPConduit) client.getConduit();
+        HTTPClientPolicy cp = hc.getClient();
+        cp.setConnection(keepAlive ? ConnectionType.KEEP_ALIVE
+                : ConnectionType.CLOSE);
+    }
+
+    public static boolean isKeepAliveConnection(Object proxy) {
+        Client client = ClientProxy.getClient(proxy);
+        HTTPConduit hc = (HTTPConduit) client.getConduit();
+        HTTPClientPolicy cp = hc.getClient();
+        return cp.getConnection() == ConnectionType.KEEP_ALIVE;
+    }
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/policy/GreeterImpl.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/policy/GreeterImpl.java
new file mode 100644
index 0000000..892e920
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/policy/GreeterImpl.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr.ws.policy;
+
+import javax.jws.WebService;
+
+import org.apache.cxf.greeter_control.AbstractGreeterImpl;
+
+@WebService(serviceName = "BasicGreeterService", 
+        portName = "GreeterPort", 
+        endpointInterface = "org.apache.cxf.greeter_control.Greeter", 
+        targetNamespace = "http://cxf.apache.org/greeter_control")
+public class GreeterImpl extends AbstractGreeterImpl {
+    
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/policy/WSPolicyTest.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/policy/WSPolicyTest.java
new file mode 100644
index 0000000..c6baaa2
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/policy/WSPolicyTest.java
@@ -0,0 +1,162 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr.ws.policy;
+
+import java.net.URL;
+import java.util.logging.Logger;
+
+import javax.xml.namespace.QName;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.spring.SpringCamelContext;
+import org.apache.camel.test.CamelTestSupport;
+import org.apache.cxf.Bus;
+import org.apache.cxf.bus.spring.SpringBusFactory;
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.endpoint.ClientImpl;
+import org.apache.cxf.endpoint.ServerImpl;
+import org.apache.cxf.frontend.ClientProxy;
+import org.apache.cxf.greeter_control.BasicGreeterService;
+import org.apache.cxf.greeter_control.Greeter;
+import org.apache.cxf.greeter_control.PingMeFault;
+import org.apache.cxf.interceptor.LoggingInInterceptor;
+import org.apache.cxf.interceptor.LoggingOutInterceptor;
+import org.apache.servicemix.camel.nmr.ServiceMixComponent;
+import org.apache.servicemix.nmr.api.NMR;
+import org.apache.servicemix.nmr.core.ServiceMix;
+import org.springframework.context.support.AbstractXmlApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class WSPolicyTest extends CamelTestSupport {
+    
+    private static final Logger LOG = LogUtils.getL7dLogger(WSPolicyTest.class);
+    
+    protected static final String SERVICE_ADDRESS = "local://smx/hello_world";
+
+    
+    protected AbstractXmlApplicationContext applicationContext;
+
+    
+    private ServerImpl server;
+    private CamelContext camelContext;
+    private ServiceMixComponent smxComponent;
+    private NMR nmr;
+    private Bus bus;
+    
+    @Override
+    protected void setUp() throws Exception {
+        applicationContext = createApplicationContext();
+        super.setUp();        
+        startService();
+    }
+    
+
+    
+    protected void startService() throws Exception {
+        Object implementor = new GreeterImpl();
+        javax.xml.ws.Endpoint.publish(SERVICE_ADDRESS, implementor);
+    }
+    
+    @Override
+    protected void tearDown() throws Exception {
+        if (applicationContext != null) {
+            applicationContext.destroy();
+        }
+        if (server != null) {
+            server.stop();
+        }
+        super.tearDown();
+    }
+  
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            public void configure() {
+                errorHandler(noErrorHandler());
+                from("cxf:bean:routerEndpoint").to("smx:testEndpoint");
+                from("smx:testEndpoint").to("cxf:bean:serviceEndpoint");  
+                
+                
+            }
+        };
+    }
+    
+    
+    @Override
+    protected CamelContext createCamelContext() throws Exception {
+        camelContext = SpringCamelContext.springCamelContext(applicationContext);
+        
+        smxComponent = new ServiceMixComponent();
+        nmr = new ServiceMix();
+        ((ServiceMix)nmr).init();
+        smxComponent.setNmr(nmr);
+        camelContext.addComponent("smx", smxComponent);
+        return camelContext;
+    }
+    
+    protected ClassPathXmlApplicationContext createApplicationContext() {
+        return new ClassPathXmlApplicationContext("org/apache/servicemix/camel/ws/policy/server.xml");
+    }
+    
+    public void testUsingAddressing() throws Exception {
+        SpringBusFactory bf = new SpringBusFactory();
+        bus = bf
+            .createBus("/org/apache/servicemix/camel/ws/policy/addr.xml");
+        LoggingInInterceptor in = new LoggingInInterceptor();
+        bus.getInInterceptors().add(in);
+        bus.getInFaultInterceptors().add(in);
+        LoggingOutInterceptor out = new LoggingOutInterceptor();
+        bus.getOutInterceptors().add(out);
+        bus.getOutFaultInterceptors().add(out);
+        URL wsdl = getClass().getResource("/wsdl/greeter_control.wsdl");
+        QName serviceName = new QName("http://cxf.apache.org/greeter_control",
+                                      "BasicGreeterService");
+        BasicGreeterService gs = new BasicGreeterService(wsdl, serviceName);
+        final Greeter greeter = gs.getGreeterPort();
+        LOG.info("Created greeter client.");
+        if ("HP-UX".equals(System.getProperty("os.name"))) {
+            ConnectionHelper.setKeepAliveConnection(greeter, true);
+        }
+
+        //set timeout to 30 secs to avoid intermitly failed
+        ((ClientImpl)ClientProxy.getClient(greeter)).setSynchronousTimeout(30000);
+        
+        // oneway
+        greeter.greetMeOneWay("CXF");
+
+        // two-way
+
+        assertEquals("CXF", greeter.greetMe("cxf"));
+
+        // exception
+
+        try {
+            greeter.pingMe();
+        } catch (PingMeFault ex) {
+            fail("First invocation should have succeeded.");
+        }
+
+        try {
+            greeter.pingMe();
+            fail("Expected PingMeFault not thrown.");
+        } catch (PingMeFault ex) {
+            assertEquals(2, (int) ex.getFaultInfo().getMajor());
+            assertEquals(1, (int) ex.getFaultInfo().getMinor());
+        }
+    }
+    
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/rm/GreeterImpl.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/rm/GreeterImpl.java
new file mode 100644
index 0000000..bb98de6
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/rm/GreeterImpl.java
@@ -0,0 +1,142 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr.ws.rm;
+
+import java.util.concurrent.Future;
+import java.util.logging.Logger;
+
+import javax.jws.WebService;
+import javax.xml.ws.AsyncHandler;
+import javax.xml.ws.Response;
+
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.greeter_control.PingMeFault;
+import org.apache.cxf.greeter_control.types.FaultDetail;
+import org.apache.cxf.greeter_control.types.GreetMeResponse;
+import org.apache.cxf.greeter_control.types.PingMeResponse;
+import org.apache.cxf.greeter_control.types.SayHiResponse;
+@WebService(serviceName = "GreeterService",
+        portName = "GreeterPort",
+        endpointInterface = "org.apache.cxf.greeter_control.Greeter",
+        targetNamespace = "http://cxf.apache.org/greeter_control")
+public class GreeterImpl {
+    private static final Logger LOG = LogUtils.getL7dLogger(GreeterImpl.class);
+    private long delay;
+    private String lastOnewayArg;
+    private boolean throwAlways;
+    private boolean useLastOnewayArg;
+    private int pingMeCount;
+     
+    public long getDelay() {
+        return delay;
+    }
+
+    public void setDelay(long d) {
+        delay = d;
+    }
+
+    public void resetLastOnewayArg() {
+        lastOnewayArg = null;
+    }
+
+    public void useLastOnewayArg(Boolean use) {
+        useLastOnewayArg = use;
+    }
+
+    public void setThrowAlways(boolean t) {
+        throwAlways = t;
+    }
+
+    public String greetMe(String arg0) {
+        LOG.info("Executing operation greetMe with parameter: " + arg0);
+        if ("twoway".equals(arg0)) {
+            useLastOnewayArg(true);
+            setDelay(5000);
+        }
+        if (delay > 0) {
+            try {
+                Thread.sleep(delay);
+            } catch (InterruptedException ex) {
+                // ignore
+            }
+        }
+        String result = null;
+        synchronized (this) {
+            result = useLastOnewayArg ? lastOnewayArg : arg0.toUpperCase();
+        }
+        LOG.fine("returning: " + result);
+        return result;
+    }
+
+    public Future<?> greetMeAsync(String arg0, AsyncHandler<GreetMeResponse> arg1) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Response<GreetMeResponse> greetMeAsync(String arg0) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public void greetMeOneWay(String arg0) {
+        synchronized (this) {
+            lastOnewayArg = arg0;
+        }
+        LOG.info("Executing operation greetMeOneWay with parameter: " + arg0);
+    }
+
+    public void pingMe() throws PingMeFault {
+        pingMeCount++;
+        if ((pingMeCount % 2) == 0 || throwAlways) {
+            LOG.fine("Throwing PingMeFault while executiong operation pingMe");
+            FaultDetail fd = new FaultDetail();
+            fd.setMajor((short)2);
+            fd.setMinor((short)1);
+            throw new PingMeFault("Pings succeed only every other time.", fd);
+        } else {
+            LOG.fine("Executing operation pingMe");        
+        }
+    }
+
+    public Response<PingMeResponse> pingMeAsync() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Future<?> pingMeAsync(AsyncHandler<PingMeResponse> arg0) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public String sayHi() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Response<SayHiResponse> sayHiAsync() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Future<?> sayHiAsync(AsyncHandler<SayHiResponse> arg0) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}
+
+
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/rm/TwowayThread.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/rm/TwowayThread.java
new file mode 100644
index 0000000..277fa6a
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/rm/TwowayThread.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr.ws.rm;
+
+import org.apache.cxf.greeter_control.Greeter;
+
+public class TwowayThread extends Thread {
+    
+    private String response;
+    private Greeter greeter;
+    public TwowayThread(Greeter gr) {
+        greeter = gr;
+    }
+    @Override
+    public void run() {
+        
+        response = greeter.greetMe("twoway");
+    }
+    
+    public String getResponse() {
+        return response;
+    }
+
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/rm/WSRMTest.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/rm/WSRMTest.java
new file mode 100644
index 0000000..63a8654
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/rm/WSRMTest.java
@@ -0,0 +1,152 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr.ws.rm;
+
+import java.net.URL;
+import java.util.logging.Logger;
+
+import javax.xml.namespace.QName;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.spring.SpringCamelContext;
+import org.apache.camel.test.CamelTestSupport;
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.bus.spring.SpringBusFactory;
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.endpoint.ServerImpl;
+import org.apache.cxf.greeter_control.Greeter;
+import org.apache.cxf.greeter_control.GreeterService;
+import org.apache.cxf.interceptor.LoggingInInterceptor;
+import org.apache.cxf.interceptor.LoggingOutInterceptor;
+import org.apache.servicemix.camel.nmr.ServiceMixComponent;
+import org.apache.servicemix.camel.nmr.ws.policy.ConnectionHelper;
+import org.apache.servicemix.nmr.api.NMR;
+import org.apache.servicemix.nmr.core.ServiceMix;
+import org.springframework.context.support.AbstractXmlApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.core.io.ClassPathResource;
+
+public class WSRMTest extends CamelTestSupport {
+    
+    private static final Logger LOG = LogUtils.getL7dLogger(WSRMTest.class);
+    
+    protected static final String SERVICE_ADDRESS = "local://smx/hello_world";
+
+    
+    protected AbstractXmlApplicationContext applicationContext;
+
+    
+    private ServerImpl server;
+    private CamelContext camelContext;
+    private ServiceMixComponent smxComponent;
+    private NMR nmr;
+    private Bus bus;
+    
+    @Override
+    protected void setUp() throws Exception {
+        applicationContext = createApplicationContext();
+        super.setUp();        
+        startService();
+
+    }
+    
+
+    
+    protected void startService() {
+        Object implementor = new GreeterImpl();
+        javax.xml.ws.Endpoint.publish(SERVICE_ADDRESS, implementor);
+ 
+    }
+    
+    @Override
+    protected void tearDown() throws Exception {
+        if (applicationContext != null) {
+            applicationContext.destroy();
+        }
+        if (server != null) {
+            server.stop();
+        }
+        super.tearDown();
+    }
+  
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            public void configure() {
+                from("cxf:bean:routerEndpoint").to("smx:testEndpoint");
+                from("smx:testEndpoint").to("cxf:bean:serviceEndpoint");       
+            }
+        };
+    }
+    
+    protected CamelContext createCamelContext() throws Exception {
+        camelContext = SpringCamelContext.springCamelContext(applicationContext);
+        smxComponent = new ServiceMixComponent();
+        nmr = new ServiceMix();
+        ((ServiceMix)nmr).init();
+        smxComponent.setNmr(nmr);
+        camelContext.addComponent("smx", smxComponent);
+        return camelContext;
+    }
+    
+    protected ClassPathXmlApplicationContext createApplicationContext() {
+        return new ClassPathXmlApplicationContext("org/apache/servicemix/camel/ws/rm/server.xml");
+    }
+    
+
+    public void testDecoupled() throws Exception {
+        SpringBusFactory bf = new SpringBusFactory();
+        bus = bf.createBus("/org/apache/servicemix/camel/ws/rm/decoupled.xml");
+        BusFactory.setDefaultBus(bus);
+        LoggingInInterceptor in = new LoggingInInterceptor();
+        bus.getInInterceptors().add(in);
+        bus.getInFaultInterceptors().add(in);
+        LoggingOutInterceptor out = new LoggingOutInterceptor();
+        bus.getOutInterceptors().add(out);
+        bus.getOutFaultInterceptors().add(out);
+        QName serviceName = new QName("http://cxf.apache.org/greeter_control", "GreeterService");
+        URL wsdl = new ClassPathResource("/wsdl/greeter_control.wsdl").getURL();
+        GreeterService gs = new GreeterService(wsdl, serviceName);
+        final Greeter greeter = gs.getGreeterPort();
+        LOG.fine("Created greeter client.");
+
+        ConnectionHelper.setKeepAliveConnection(greeter, true);
+
+
+        TwowayThread t = new TwowayThread(greeter);
+        t.start();
+
+        // allow for partial response to twoway request to arrive
+
+        long wait = 3000;
+        while (wait > 0) {
+            long start = System.currentTimeMillis();
+            try {
+                Thread.sleep(wait);
+            } catch (InterruptedException ex) {
+                // ignore
+            }
+            wait -= System.currentTimeMillis() - start;
+        }
+
+        greeter.greetMeOneWay("oneway");
+        t.join();
+        
+        assertEquals("Unexpected response to twoway request", "oneway", t.getResponse());
+    }
+}
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/security/GreeterImpl.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/security/GreeterImpl.java
new file mode 100644
index 0000000..70d5308
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/security/GreeterImpl.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr.ws.security;
+
+@javax.jws.WebService(
+        serviceName = "SOAPServiceWSSecurity", 
+        portName = "TimestampSignEncrypt", 
+        endpointInterface = "org.apache.hello_world_soap_http.Greeter",
+        targetNamespace = "http://apache.org/hello_world_soap_http",
+        wsdlLocation = "org/apache/servicemix/camel/ws/security/hello_world.wsdl"
+    )
+    public class GreeterImpl 
+        extends org.apache.hello_world_soap_http.GreeterImpl {
+
+        public String greetMe(String me) {
+            System.out.println("\n\n*** GreetMe called with: " + me + "***\n\n");
+            return "Hello " + me;
+        }
+        
+    }
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/security/KeystorePasswordCallback.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/security/KeystorePasswordCallback.java
new file mode 100644
index 0000000..892a658
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/security/KeystorePasswordCallback.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr.ws.security;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+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 KeystorePasswordCallback implements CallbackHandler {
+    
+    private Map<String, String> passwords = 
+        new HashMap<String, String>();
+    
+    public KeystorePasswordCallback() {
+        passwords.put("alice", "password");
+        passwords.put("bob", "password");
+    }
+
+    /**
+     * It attempts to get the password from the private 
+     * alias/passwords map.
+     */
+    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
+        for (int i = 0; i < callbacks.length; i++) {
+            WSPasswordCallback pc = (WSPasswordCallback)callbacks[i];
+
+            String pass = passwords.get(pc.getIdentifier());
+            if (pass != null) {
+                pc.setPassword(pass);
+                return;
+            }
+        }
+    }
+    
+    /**
+     * Add an alias/password pair to the callback mechanism.
+     */
+    public void setAliasPassword(String alias, String password) {
+        passwords.put(alias, password);
+    }
+}
+
diff --git a/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/security/WSSecurityTest.java b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/security/WSSecurityTest.java
new file mode 100644
index 0000000..7e95dbb
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/java/org/apache/servicemix/camel/nmr/ws/security/WSSecurityTest.java
@@ -0,0 +1,143 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.camel.nmr.ws.security;
+
+import java.util.logging.Logger;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.spring.SpringCamelContext;
+import org.apache.camel.test.CamelTestSupport;
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.bus.spring.SpringBusFactory;
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.endpoint.ServerImpl;
+import org.apache.cxf.interceptor.LoggingInInterceptor;
+import org.apache.cxf.interceptor.LoggingOutInterceptor;
+import org.apache.hello_world_soap_http.Greeter;
+import org.apache.servicemix.camel.nmr.ServiceMixComponent;
+import org.apache.servicemix.nmr.api.NMR;
+import org.apache.servicemix.nmr.core.ServiceMix;
+import org.springframework.context.support.AbstractXmlApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class WSSecurityTest extends CamelTestSupport {
+    
+    private static final Logger LOG = LogUtils.getL7dLogger(WSSecurityTest.class);
+    
+    private static final java.net.URL WSDL_LOC;
+    static {
+        java.net.URL tmp = null;
+        try {
+            tmp = WSSecurityTest.class.getClassLoader().getResource(
+                "org/apache/servicemix/camel/ws/security/hello_world.wsdl"
+            );
+        } catch (final Exception e) {
+            e.printStackTrace();
+        }
+        WSDL_LOC = tmp;
+    }
+    
+
+    protected static final String SERVICE_ADDRESS = "local://smx/hello_world";
+
+    
+    protected AbstractXmlApplicationContext applicationContext;
+
+    
+    private ServerImpl server;
+    private CamelContext camelContext;
+    private ServiceMixComponent smxComponent;
+    private NMR nmr;
+    
+    @Override
+    protected void setUp() throws Exception {
+        applicationContext = createApplicationContext();
+        super.setUp();        
+        startService();
+
+    }
+    
+
+    
+    protected void startService() {
+        Object implementor = new GreeterImpl();
+        javax.xml.ws.Endpoint.publish(SERVICE_ADDRESS, implementor);
+ 
+    }
+    
+    @Override
+    protected void tearDown() throws Exception {
+        if (applicationContext != null) {
+            applicationContext.destroy();
+        }
+        if (server != null) {
+            server.stop();
+        }
+        super.tearDown();
+    }
+  
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            public void configure() {
+                from("cxf:bean:routerEndpoint").to("smx:testEndpoint");
+                from("smx:testEndpoint").to("cxf:bean:serviceEndpoint");       
+            }
+        };
+    }
+    
+    protected CamelContext createCamelContext() throws Exception {
+        camelContext = SpringCamelContext.springCamelContext(applicationContext);
+        
+        smxComponent = new ServiceMixComponent();
+        nmr = new ServiceMix();
+        ((ServiceMix)nmr).init();
+        smxComponent.setNmr(nmr);
+        camelContext.addComponent("smx", smxComponent);
+        return camelContext;
+    }
+    
+    protected ClassPathXmlApplicationContext createApplicationContext() {
+        return new ClassPathXmlApplicationContext("org/apache/servicemix/camel/ws/security/server.xml");
+    }
+    
+    public void testTimestampSignEncrypt() {
+        LOG.info("test security");
+        Bus bus = new SpringBusFactory().createBus(
+                "org/apache/servicemix/camel/ws/security/client.xml"); 
+        BusFactory.setDefaultBus(bus);
+        LoggingInInterceptor in = new LoggingInInterceptor();
+        bus.getInInterceptors().add(in);
+        bus.getInFaultInterceptors().add(in);
+        LoggingOutInterceptor out = new LoggingOutInterceptor();
+        bus.getOutInterceptors().add(out);
+        bus.getOutFaultInterceptors().add(out);
+        final javax.xml.ws.Service svc = javax.xml.ws.Service.create(WSDL_LOC,
+                new javax.xml.namespace.QName(
+                        "http://apache.org/hello_world_soap_http",
+                        "SOAPServiceWSSecurity"));
+        final Greeter greeter = svc.getPort(new javax.xml.namespace.QName(
+                "http://apache.org/hello_world_soap_http",
+                "TimestampSignEncrypt"), Greeter.class);
+        String ret = greeter.sayHi();
+        assertEquals(ret, "Bonjour");
+        ret = greeter.greetMe("ffang");
+        assertEquals(ret, "Hello ffang");
+    }
+    
+}
diff --git a/trunk/camel/servicemix-camel/src/test/resources/log4j.properties b/trunk/camel/servicemix-camel/src/test/resources/log4j.properties
new file mode 100644
index 0000000..db2051e
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/log4j.properties
@@ -0,0 +1,37 @@
+#
+#    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.
+#
+
+#
+# The logging properties used during tests..
+#
+log4j.rootLogger=INFO, out, stdout
+
+# Separate loggers for Camel and ServiceMix to reduce lock contention
+log4j.org.apache.camel=INFO, out
+#log4j.org.apache.servicemix=DEBUG,out
+
+# 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 [%-15.15t] %-5p %-30.30c{1} - %m%n
+
+# File appender
+log4j.appender.out=org.apache.log4j.FileAppender
+log4j.appender.out.layout=org.apache.log4j.PatternLayout
+log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
+log4j.appender.out.file=target/servicemix-test.log
+log4j.appender.out.append=true
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/spring/CxfMessageBeans.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/spring/CxfMessageBeans.xml
new file mode 100644
index 0000000..4099665
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/spring/CxfMessageBeans.xml
@@ -0,0 +1,57 @@
+<?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:cxf="http://camel.apache.org/schema/cxf"
+       xmlns:camel="http://camel.apache.org/schema/spring"
+       xsi:schemaLocation="
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+       http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd
+       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+    ">
+
+  
+  <cxf:cxfEndpoint id="routerEndpoint" address="http://localhost:8192/PersonService/" 
+                   serviceClass="org.apache.servicemix.samples.wsdl_first.Person"
+                   endpointName="person:soap"
+                   serviceName="person:PersonService"
+                   xmlns:person="http://servicemix.apache.org/samples/wsdl-first"/>
+  
+    
+  <cxf:cxfEndpoint id="serviceEndpoint" address="http://localhost:19000/PersonService/" 
+                   serviceClass="org.apache.servicemix.samples.wsdl_first.Person"
+                   endpointName="person:soap"
+                   serviceName="person:PersonService"
+                   xmlns:person="http://servicemix.apache.org/samples/wsdl-first"/>
+
+   <camelContext xmlns="http://camel.apache.org/schema/spring">
+      <route>
+            <from uri="cxf:bean:routerEndpoint?dataFormat=MESSAGE"/>
+            <to uri="smx:bean:testEndpoint"/>
+      </route>
+
+      <route>
+            <from uri="smx:bean:testEndpoint"/>
+            <to uri="cxf:bean:serviceEndpoint?dataFormat=MESSAGE"/>
+      </route>
+
+    </camelContext>
+
+  <bean id="org.apache.servicemix.nmr.api.NMR" class="org.apache.servicemix.nmr.core.ServiceMix" init-method="init" />
+
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/spring/DummyBean.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/spring/DummyBean.xml
new file mode 100644
index 0000000..475dfa3
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/spring/DummyBean.xml
@@ -0,0 +1,28 @@
+<?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"
+       xsi:schemaLocation="
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+    ">
+
+  
+
+  <bean id="org.apache.servicemix.nmr.api.NMR" class="org.apache.servicemix.nmr.core.ServiceMix" init-method="init" />
+
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/spring/EndpointBeans.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/spring/EndpointBeans.xml
new file mode 100644
index 0000000..92af3a2
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/spring/EndpointBeans.xml
@@ -0,0 +1,49 @@
+<?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:cxf="http://camel.apache.org/schema/cxf"
+       xmlns:camel="http://camel.apache.org/schema/spring"
+       xsi:schemaLocation="
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+       http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd
+       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+    ">
+
+  
+  <cxf:cxfEndpoint id="routerEndpoint" address="http://localhost:19000/router" 
+                   serviceClass="org.apache.servicemix.camel.nmr.HelloService">
+       <cxf:properties>
+           <entry key="setDefaultBus" value="true"/>
+       </cxf:properties>
+  </cxf:cxfEndpoint>
+  
+    
+  <cxf:cxfEndpoint id="serviceEndpoint" address="local://smx/helloworld" 
+                   serviceClass="org.apache.servicemix.camel.nmr.HelloService">
+       <cxf:properties>
+           <entry key="setDefaultBus" value="true"/>
+       </cxf:properties>
+  </cxf:cxfEndpoint>
+
+  <camel:camelContext>
+  </camel:camelContext>
+
+  <bean id="org.apache.servicemix.nmr.api.NMR" class="org.apache.servicemix.nmr.core.ServiceMix" init-method="init" />
+
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/spring/mtom.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/spring/mtom.xml
new file mode 100644
index 0000000..cc532dc
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/spring/mtom.xml
@@ -0,0 +1,51 @@
+<?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:cxf="http://camel.apache.org/schema/cxf"      
+       xmlns:mtom="http://cxf.apache.org/mime"
+       xsi:schemaLocation="
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+       http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd
+    ">
+
+  
+  <cxf:cxfEndpoint id="routerEndpoint"
+                   address="http://localhost:9036/mime-test"
+                   serviceClass="org.apache.cxf.mime.TestMtom"
+                   wsdlURL="/wsdl/mtom_xop.wsdl"
+                   serviceName="mtom:TestMtomService">
+       <cxf:properties>
+           <entry key="setDefaultBus" value="true"/>
+       </cxf:properties>
+  </cxf:cxfEndpoint> 
+    
+  <cxf:cxfEndpoint id="serviceEndpoint"
+                   address="local://smx/attachment"
+                   serviceClass="org.apache.cxf.mime.TestMtom"
+                   wsdlURL="/wsdl/mtom_xop.wsdl"
+                   serviceName="mtom:TestMtomService"
+                   transportId="http://cxf.apache.org/transports/local">
+       <cxf:properties>
+           <entry key="setDefaultBus" value="true"/>
+       </cxf:properties>
+  </cxf:cxfEndpoint>
+
+  <bean id="org.apache.servicemix.nmr.api.NMR" class="org.apache.servicemix.nmr.core.ServiceMix" init-method="init" />
+
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/addressing/addressing-hpux.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/addressing/addressing-hpux.xml
new file mode 100644
index 0000000..d371e1e
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/addressing/addressing-hpux.xml
@@ -0,0 +1,33 @@
+<?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:http="http://cxf.apache.org/transports/http/configuration"
+       xsi:schemaLocation="
+http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+  
+    <http:conduit name="{http://apache.org/hello_world_soap_http}SoapPort.http-conduit">
+      <http:client Connection="Keep-Alive" DecoupledEndpoint="http://localhost:9999/decoupled_endpoint"/>
+    </http:conduit>
+    
+    <import resource="wsa_interceptors.xml"/>
+</beans>
+
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/addressing/addressing.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/addressing/addressing.xml
new file mode 100644
index 0000000..ff15fbb
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/addressing/addressing.xml
@@ -0,0 +1,33 @@
+<?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:http="http://cxf.apache.org/transports/http/configuration"
+       xsi:schemaLocation="
+http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+  
+    <http:conduit name="{http://apache.org/hello_world_soap_http}SoapPort.http-conduit">
+      <http:client DecoupledEndpoint="http://localhost:9999/decoupled_endpoint"/>
+    </http:conduit>
+    
+    <import resource="wsa_interceptors.xml"/>
+</beans>
+
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/addressing/hello_world.wsdl b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/addressing/hello_world.wsdl
new file mode 100644
index 0000000..d51693c
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/addressing/hello_world.wsdl
@@ -0,0 +1,407 @@
+<?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.
+-->
+<wsdl:definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+    xmlns:tns="http://apache.org/hello_world_soap_http"
+    xmlns:x1="http://apache.org/hello_world_soap_http/types"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    targetNamespace="http://apache.org/hello_world_soap_http" name="HelloWorld">
+    <wsdl:types>
+        <schema targetNamespace="http://apache.org/hello_world_soap_http/types" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:x1="http://apache.org/hello_world_soap_http/types"> <!--elementFormDefault="qualified"-->
+            <element name="sayHi">
+                <complexType/>
+            </element>
+            <element name="sayHiResponse">
+                <complexType>
+                    <sequence>
+                        <element name="responseType" type="string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="greetMe">
+                <complexType>
+                    <sequence>
+                        <element name="requestType" type="string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="greetMeResponse">
+                <complexType>
+                    <sequence>
+                        <element name="responseType" type="string"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+            <element name="testNillable">
+                <complexType>
+                    <sequence>
+                        <element name="NillElem" nillable="true" type="string"/>
+                        <element name="intElem" type="int"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="testNillableResponse">
+                <complexType>
+                    <sequence>
+                        <element name="responseType" nillable="true" type="string"/>
+                    </sequence>
+                </complexType>
+            </element>
+
+            <element name="greetMeLater">
+                <complexType>
+                    <sequence>
+                        <element name="requestType" type="long"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="greetMeLaterResponse">
+                <complexType>
+                    <sequence>
+                        <element name="responseType" type="string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="greetMeSometime">
+                <complexType>
+                    <sequence>
+                        <element name="requestType" type="string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="greetMeSometimeResponse">
+                <complexType>
+                    <sequence>
+                        <element name="responseType" type="string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="greetMeOneWay">
+                <complexType>
+                    <sequence>
+                        <element name="requestType" type="string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="testDocLitFault">
+                <complexType>
+                    <sequence>
+                        <element name="faultType" type="string"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="testDocLitFaultResponse">
+                <complexType>
+                    <sequence/>
+                </complexType>
+            </element>
+            <complexType name="ErrorCode">
+                <sequence>
+                    <element name="minor" type="short"/>
+                    <element name="major" type="short"/>
+                </sequence>
+            </complexType>
+            <element name="NoSuchCodeLit">
+                <complexType>
+                    <sequence>
+                        <element name="code" type="x1:ErrorCode"/>
+                    </sequence>
+                </complexType>
+            </element>
+            <element name="BadRecordLit" type="string"/>
+            <complexType name="BadRecord">
+                <sequence>
+                    <element name="reason" type="string"/>
+                    <element name="code" type="short"/>
+                </sequence>
+            </complexType>
+            <complexType name="addNumbers">
+                <sequence>
+                    <element name="arg0" type="int"/>
+                    <element name="arg1" type="int"/>
+                </sequence>
+            </complexType>
+            <element name="addNumbers" type="x1:addNumbers"/>
+            <complexType name="addNumbersResponse">
+                <sequence>
+                    <element name="return" type="int"/>
+                </sequence>
+            </complexType>
+            <element name="addNumbersResponse" type="x1:addNumbersResponse"/>
+            <complexType name="stringStruct">
+                <sequence>
+                    <element name="arg0" type="string"/>
+                    <element name="arg1" type="string"/>
+                </sequence>
+            </complexType>
+            <element name="BareDocument" type="string"/>
+            <element name="BareDocumentResponse">
+                <complexType>
+                    <sequence>
+                        <element name="company" type="string"/>
+                    </sequence>
+                    <attribute name="id" type="int"/>
+                </complexType>
+            </element>      
+        </schema>
+    </wsdl:types>
+    <wsdl:message name="sayHiRequest">
+        <wsdl:part name="in" element="x1:sayHi"/>
+    </wsdl:message>
+    <wsdl:message name="sayHiResponse">
+        <wsdl:part name="out" element="x1:sayHiResponse"/>
+    </wsdl:message>
+    <wsdl:message name="greetMeRequest">
+        <wsdl:part name="in" element="x1:greetMe"/>
+    </wsdl:message>
+    <wsdl:message name="greetMeResponse">
+        <wsdl:part name="out" element="x1:greetMeResponse"/>
+    </wsdl:message>
+    <wsdl:message name="testNillableRequest">
+        <wsdl:part name="in" element="x1:testNillable"/>
+    </wsdl:message>
+    <wsdl:message name="testNillableResponse">
+        <wsdl:part name="out" element="x1:testNillableResponse"/>
+    </wsdl:message>
+    <wsdl:message name="greetMeLaterRequest">
+        <wsdl:part name="in" element="x1:greetMeLater"/>
+    </wsdl:message>
+    <wsdl:message name="greetMeLaterResponse">
+        <wsdl:part name="out" element="x1:greetMeLaterResponse"/>
+    </wsdl:message>
+    <wsdl:message name="greetMeSometimeRequest">
+        <wsdl:part name="in" element="x1:greetMeSometime"/>
+    </wsdl:message>
+    <wsdl:message name="greetMeSometimeResponse">
+        <wsdl:part name="out" element="x1:greetMeSometimeResponse"/>
+    </wsdl:message>
+    <wsdl:message name="greetMeOneWayRequest">
+        <wsdl:part name="in" element="x1:greetMeOneWay"/>
+    </wsdl:message>
+    <wsdl:message name="testDocLitFaultRequest">
+        <wsdl:part name="in" element="x1:testDocLitFault"/>
+    </wsdl:message>
+    <wsdl:message name="testDocLitFaultResponse">
+        <wsdl:part name="out" element="x1:testDocLitFaultResponse"/>
+    </wsdl:message>
+    <wsdl:message name="NoSuchCodeLitFault">
+        <wsdl:part name="NoSuchCodeLit" element="x1:NoSuchCodeLit"/>
+    </wsdl:message>
+    <wsdl:message name="BadRecordLitFault">
+        <wsdl:part name="BadRecordLit" element="x1:BadRecordLit"/>
+    </wsdl:message>
+    <wsdl:message name="testDocLitBareRequest">
+        <wsdl:part name="in" element="x1:BareDocument"/>
+    </wsdl:message>
+    <wsdl:message name="testDocLitBareResponse">
+        <wsdl:part name="out" element="x1:BareDocumentResponse"/>
+    </wsdl:message> 
+    <wsdl:portType name="Greeter">
+        <wsdl:operation name="sayHi">
+            <wsdl:input name="sayHiRequest" message="tns:sayHiRequest"/>
+            <wsdl:output name="sayHiResponse" message="tns:sayHiResponse"/>
+        </wsdl:operation>
+        <wsdl:operation name="greetMe">
+            <wsdl:input name="greetMeRequest" message="tns:greetMeRequest"/>
+            <wsdl:output name="greetMeResponse" message="tns:greetMeResponse"/>
+        </wsdl:operation>
+        <wsdl:operation name="testNillable">
+            <wsdl:input name="testNillableRequest" message="tns:testNillableRequest"/>
+            <wsdl:output name="testNillableResponse" message="tns:testNillableResponse"/>
+        </wsdl:operation>
+        <wsdl:operation name="greetMeLater">
+            <wsdl:input name="greetMeLaterRequest" message="tns:greetMeLaterRequest"/>
+            <wsdl:output name="greetMeLaterResponse" message="tns:greetMeLaterResponse"/>
+        </wsdl:operation>
+       <wsdl:operation name="greetMeSometime">
+            <wsdl:input name="greetMeSometimeRequest" message="tns:greetMeSometimeRequest"/>
+            <wsdl:output name="greetMeSometimeResponse" message="tns:greetMeSometimeResponse"/>
+        </wsdl:operation>
+        <wsdl:operation name="greetMeOneWay">
+            <wsdl:input name="greetMeOneWayRequest" message="tns:greetMeOneWayRequest"/>
+        </wsdl:operation>
+        <wsdl:operation name="testDocLitFault">
+            <wsdl:input name="testDocLitFaultRequest" message="tns:testDocLitFaultRequest"/>
+            <wsdl:output name="testDocLitFaultResponse" message="tns:testDocLitFaultResponse"/>
+            <wsdl:fault name="NoSuchCodeLitFault" message="tns:NoSuchCodeLitFault"/>
+            <wsdl:fault name="BadRecordLitFault" message="tns:BadRecordLitFault"/>
+        </wsdl:operation>
+
+    </wsdl:portType>
+
+    <wsdl:portType name="DocLitBare">
+        <wsdl:operation name="testDocLitBare">
+            <wsdl:input name="testDocLitBareRequest" message="tns:testDocLitBareRequest"/>
+            <wsdl:output name="testDocLitBareResponse" message="tns:testDocLitBareResponse"/>
+        </wsdl:operation>       
+    </wsdl:portType>
+    <wsdl:binding name="Greeter_SOAPBinding" type="tns:Greeter">
+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <wsdl:operation name="sayHi">
+            <soap:operation style="document"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="greetMe">
+            <soap:operation style="document"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="testNillable">
+            <soap:operation style="document"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="greetMeLater">
+            <soap:operation style="document"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="greetMeSometime">
+            <soap:operation style="document"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="greetMeOneWay">
+            <soap:operation style="document"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+        </wsdl:operation>
+        <wsdl:operation name="testDocLitFault">
+            <soap:operation style="document"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal"/>
+            </wsdl:output>
+            <wsdl:fault name="NoSuchCodeLitFault">
+                <soap:fault name="NoSuchCodeLitFault" use="literal"/>
+            </wsdl:fault>
+            <wsdl:fault name="BadRecordLitFault">
+                <soap:fault name="BadRecordLitFault" use="literal"/>
+            </wsdl:fault>
+        </wsdl:operation>
+
+    </wsdl:binding>
+    <wsdl:binding name="Doc_Lit_Bare_SOAPBinding" type="tns:DocLitBare">
+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <wsdl:operation name="testDocLitBare">
+            <soap:operation style="document" soapAction="http://apache.org/hello_world_soap_http/testDocLitBare"/>
+            <wsdl:input name="testDocLitBareRequest">
+                <soap:body use="literal"/>
+            </wsdl:input>
+            <wsdl:output name="testDocLitBareResponse">
+                <soap:body use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+    </wsdl:binding>
+
+
+    <wsdl:service name="SOAPService">
+    <wsdl:port name="SoapPort" binding="tns:Greeter_SOAPBinding">
+            <soap:address location="http://localhost:19000/SoapContext/SoapPort"/>
+        </wsdl:port>
+
+    <wsdl:port name="SoapPort1" binding="tns:Greeter_SOAPBinding">
+            <soap:address location="http://localhost:7000/SoapContext/SoapPort"/>
+        </wsdl:port>
+    </wsdl:service>
+
+    <wsdl:service name="SOAPProviderService">
+        <wsdl:port name="SoapProviderPort" binding="tns:Greeter_SOAPBinding">
+            <soap:address location="http://localhost:9003/SoapContext/SoapProviderPort"/>
+        </wsdl:port>
+    </wsdl:service>
+
+        <wsdl:service name="SOAPDispatchService">
+        <wsdl:port name="SoapDispatchPort" binding="tns:Greeter_SOAPBinding">
+            <soap:address location="http://localhost:9006/SOAPDispatchService/SoapDispatchPort"/>
+        </wsdl:port>
+    </wsdl:service>
+
+    <wsdl:service name="SOAPService_DocLitBare">
+        <wsdl:port name="SoapPort2" binding="tns:Doc_Lit_Bare_SOAPBinding">
+            <soap:address location="http://localhost:7600/SoapContext/SoapPort"/>
+        </wsdl:port>
+    </wsdl:service>
+    <wsdl:service name="SOAPServiceAddressingDocLitBare">
+        <wsdl:port name="SoapPort" binding="tns:Doc_Lit_Bare_SOAPBinding">
+            <soap:address location="http://localhost:7600/SoapContext/SoapPort"/>
+            <wswa:UsingAddressing xmlns:wswa="http://www.w3.org/2005/02/addressing/wsdl"/>
+        </wsdl:port>
+    </wsdl:service>
+    <wsdl:service name="SOAPService_Test1">
+        <wsdl:port name="SoapPort_Test1" binding="tns:Greeter_SOAPBinding">
+            <soap:address location="http://localhost:9100"/>
+        </wsdl:port>
+        <wsdl:port name="SoapPort_Test2" binding="tns:Greeter_SOAPBinding">
+            <soap:address location="http://localhost:9101"/>
+        </wsdl:port>
+    </wsdl:service>
+    <wsdl:service name="SOAPServiceAddressing">
+        <wsdl:port name="SoapPort" binding="tns:Greeter_SOAPBinding">
+            <soap:address location="http://localhost:9008/SoapContext/SoapPort"/>
+            <wswa:UsingAddressing xmlns:wswa="http://www.w3.org/2005/02/addressing/wsdl"/>
+        </wsdl:port>
+    </wsdl:service>
+    <wsdl:service name="SOAPServiceConcurrencyTest">
+        <wsdl:port name="SoapPort" binding="tns:Greeter_SOAPBinding">
+            <soap:address location="http://localhost:9009/SoapContext/SoapPort"/>
+        </wsdl:port>
+    </wsdl:service>
+    <wsdl:service name="SOAPServiceBogusAddressTest">
+        <wsdl:port name="SoapPort" binding="tns:Greeter_SOAPBinding">
+            <soap:address location="FOO"/>
+        </wsdl:port>
+    </wsdl:service>
+    <wsdl:service name="SOAPServiceMultiPortTypeTest">
+        <wsdl:port name="GreeterPort" binding="tns:Greeter_SOAPBinding">
+            <soap:address location="http://localhost:9020/MultiPort/GreeterPort"/>
+        </wsdl:port>
+        <wsdl:port name="DocLitBarePort" binding="tns:Doc_Lit_Bare_SOAPBinding">
+            <soap:address location="http://localhost:9021/MultiPort/DocBarePort"/>
+        </wsdl:port>        
+    </wsdl:service>
+</wsdl:definitions>
+
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/addressing/server.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/addressing/server.xml
new file mode 100644
index 0000000..39aea19
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/addressing/server.xml
@@ -0,0 +1,92 @@
+<?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:jaxws="http://cxf.apache.org/jaxws"
+    xmlns:test="http://cxf.apache.org/greeter_control"
+    xmlns:cxf="http://camel.apache.org/schema/cxf"
+    xmlns:smx="http://servicemix.apache.org/camelEndpoint/"
+    xmlns:camel="http://camel.apache.org/schema/spring"
+    xsi:schemaLocation="
+        http://www.springframework.org/schema/beans                     http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+        http://cxf.apache.org/jaxws                                     http://cxf.apache.org/schemas/jaxws.xsd
+        http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd
+        http://servicemix.apache.org/camelEndpoint/ http://servicemix.apache.org/camelEndpoint/.xsd
+        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+    ">
+    
+    <import resource="classpath:META-INF/cxf/cxf.xml"/>
+    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
+    <import resource="classpath:META-INF/cxf/cxf-extension-http-jetty.xml"/>
+    <import resource="classpath:META-INF/cxf/cxf-extension-local.xml" />
+    
+    <bean class="org.apache.camel.component.cxf.transport.CamelTransportFactory" lazy-init="true">
+        <property name="bus" ref="cxf"/>
+        <property name="camelContext" ref="camel_context"/>
+        <property name="transportIds">
+            <list>
+              <value>http://cxf.apache.org/transports/camel</value>
+            </list>
+        </property>
+    </bean>
+        
+    <camel:camelContext id="camel_context">
+    </camel:camelContext>
+   
+    <bean id="mapAggregator" class="org.apache.cxf.ws.addressing.MAPAggregator"/>
+    <bean id="mapCodec" class="org.apache.cxf.ws.addressing.soap.MAPCodec"/>
+    <bean class="org.apache.servicemix.camel.nmr.ws.addressing.MAPVerifier" id="mapVerifier"/>
+    <bean class="org.apache.servicemix.camel.nmr.ws.addressing.HeaderVerifier" id="headVerifier"/>
+    <cxf:cxfEndpoint id="routerEndpoint" name="test:GreeterPort" address="camel://jetty:http://localhost:9008/SoapContext/SoapPort"  bus="cxf" serviceClass="org.apache.hello_world_soap_http.Greeter">
+        <cxf:properties>
+            <entry key="dataFormat" value="POJO"/>
+        </cxf:properties>
+        <cxf:features>
+            <bean class="org.apache.cxf.feature.LoggingFeature"/>
+        </cxf:features>
+        <cxf:outInterceptors>
+            <ref bean="mapVerifier"/>
+            <ref bean="headVerifier"/>
+        </cxf:outInterceptors>
+        <cxf:inInterceptors>
+            <ref bean="mapVerifier"/>
+            <ref bean="headVerifier"/>
+        </cxf:inInterceptors>
+        
+        <cxf:outFaultInterceptors>
+            <ref bean="mapVerifier"/>
+            <ref bean="headVerifier"/>
+        </cxf:outFaultInterceptors>
+        <cxf:inFaultInterceptors>
+            <ref bean="mapVerifier"/>
+            <ref bean="headVerifier"/>
+        </cxf:inFaultInterceptors>
+
+    </cxf:cxfEndpoint>
+
+
+    <cxf:cxfEndpoint id="serviceEndpoint" address="local://smx/hello_world"
+      serviceClass="org.apache.hello_world_soap_http.Greeter">
+        <cxf:properties>
+            <entry key="dataFormat" value="POJO"/>
+        </cxf:properties>
+    </cxf:cxfEndpoint>
+
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/addressing/wsa_interceptors.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/addressing/wsa_interceptors.xml
new file mode 100644
index 0000000..dd3eb4e
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/addressing/wsa_interceptors.xml
@@ -0,0 +1,69 @@
+<?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:http-conf="http://cxf.apache.org/transports/http/configuration"
+       xmlns:jaxws="http://cxf.apache.org/jaxws"
+       xsi:schemaLocation="
+http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+  
+    <bean id="mapAggregator" class="org.apache.cxf.ws.addressing.MAPAggregator"/>
+    <bean id="mapCodec" class="org.apache.cxf.ws.addressing.soap.MAPCodec"/>
+    <bean id="loggingIn" class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+
+    <!-- We are adding the interceptors to the bus as we will have only one endpoint/service/bus. -->
+
+    <bean id="cxf" class="org.apache.cxf.bus.CXFBusImpl">
+        <property name="inInterceptors">
+            <list>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+                <ref bean="loggingIn"/>
+            </list>
+        </property>
+        <property name="inFaultInterceptors">
+            <list>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+            </list>
+        </property>
+        <property name="outInterceptors">
+            <list>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+            </list>
+        </property>
+        <property name="outFaultInterceptors">
+            <list>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+            </list>
+        </property>
+    </bean>
+
+    <jaxws:client name="{http://apache.org/hello_world_soap_http}SoapPort" 
+                  createdFromAPI="true">
+        <jaxws:conduitSelector>
+            <bean class="org.apache.cxf.endpoint.DeferredConduitSelector"/>
+        </jaxws:conduitSelector>
+    </jaxws:client>
+    
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/policy/addr-external.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/policy/addr-external.xml
new file mode 100644
index 0000000..4742a68
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/policy/addr-external.xml
@@ -0,0 +1,33 @@
+<?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.
+-->
+<attachments xmlns:wsp="http://www.w3.org/2006/07/ws-policy" xmlns:wsa="http://www.w3.org/2005/08/addressing">
+    <wsp:PolicyAttachment>
+        <wsp:AppliesTo>
+            <wsa:EndpointReference>
+                <wsa:Address>http://localhost:9020/SoapContext/GreeterPort</wsa:Address>
+            </wsa:EndpointReference>
+        </wsp:AppliesTo>
+        <wsp:Policy>
+            <wsam:Addressing xmlns:wsam="http://www.w3.org/2007/02/addressing/metadata">
+                <wsp:Policy/>
+            </wsam:Addressing>
+        </wsp:Policy>
+    </wsp:PolicyAttachment>    
+</attachments>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/policy/addr.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/policy/addr.xml
new file mode 100644
index 0000000..a2c58f3
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/policy/addr.xml
@@ -0,0 +1,41 @@
+<?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:http="http://cxf.apache.org/transports/http/configuration"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="
+http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+    <http:conduit name="{http://cxf.apache.org/greeter_control}GreeterPort.http-conduit">
+      <http:client DecoupledEndpoint="http://localhost:9999/decoupled_endpoint"/>
+    </http:conduit>
+
+    <bean id="org.apache.cxf.ws.policy.PolicyEngine" class="org.apache.cxf.ws.policy.spring.InitializingPolicyEngine">
+        <property name="bus" ref="cxf"/>
+        <property name="enabled" value="true"/>
+    </bean>
+
+    <bean class="org.apache.cxf.ws.policy.attachment.external.ExternalAttachmentProvider">
+        <constructor-arg ref="cxf"/>
+        <property name="location" value="org/apache/servicemix/camel/ws/policy/addr-external.xml"/>
+    </bean>
+
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/policy/server.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/policy/server.xml
new file mode 100644
index 0000000..4ce9dba
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/policy/server.xml
@@ -0,0 +1,69 @@
+<?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:jaxws="http://cxf.apache.org/jaxws"
+    xmlns:test="http://cxf.apache.org/greeter_control"
+    xmlns:cxf="http://camel.apache.org/schema/cxf"
+    xmlns:camel="http://camel.apache.org/schema/spring"
+    xmlns:smx="http://servicemix.apache.org/camelEndpoint/"
+    xsi:schemaLocation="
+        http://www.springframework.org/schema/beans                     http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+        http://cxf.apache.org/jaxws                                     http://cxf.apache.org/schemas/jaxws.xsd
+        http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd
+        http://servicemix.apache.org/camelEndpoint/ http://servicemix.apache.org/camelEndpoint/.xsd
+        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+    ">
+    
+    <import resource="classpath:META-INF/cxf/cxf.xml"/>
+    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
+    <import resource="classpath:META-INF/cxf/cxf-extension-http-jetty.xml"/>
+    <import resource="classpath:META-INF/cxf/cxf-extension-local.xml" />
+    
+    <bean class="org.apache.camel.component.cxf.transport.CamelTransportFactory" lazy-init="true">
+        <property name="bus" ref="cxf"/>
+        <property name="camelContext" ref="camel_context"/>
+        <property name="transportIds">
+            <list>
+              <value>http://cxf.apache.org/transports/camel</value>
+            </list>
+        </property>
+    </bean>
+        
+    <camel:camelContext id="camel_context">
+    </camel:camelContext>
+   
+    <cxf:cxfEndpoint id="routerEndpoint" name="test:GreeterPort" address="camel://jetty:http://localhost:9020/SoapContext/GreeterPort"  serviceClass="org.apache.cxf.greeter_control.Greeter">
+        <cxf:features>
+            <bean class="org.apache.cxf.feature.LoggingFeature"/>
+        </cxf:features>
+        <cxf:properties>
+            <entry key="setDefaultBus" value="true"/>
+        </cxf:properties>
+    </cxf:cxfEndpoint>
+
+
+    <cxf:cxfEndpoint id="serviceEndpoint" address="local://smx/hello_world"
+      serviceClass="org.apache.cxf.greeter_control.Greeter">
+        <cxf:properties>
+            <entry key="setDefaultBus" value="true"/>
+        </cxf:properties>
+    </cxf:cxfEndpoint>
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/policy/xbean.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/policy/xbean.xml
new file mode 100644
index 0000000..b53b44b
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/policy/xbean.xml
@@ -0,0 +1,69 @@
+<?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:sm="http://servicemix.apache.org/config/1.0"
+       xmlns:cxfse="http://servicemix.apache.org/cxfse/1.0"
+       xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0"
+       xmlns:test="urn:test"
+       xmlns:greeter="http://cxf.apache.org/greeter_control">
+  
+  <sm:container id="jbi" embedded="true">
+    
+    <sm:endpoints>
+      <cxfse:endpoint>
+        <cxfse:pojo>
+          <bean class="org.apache.servicemix.cxfbc.ws.policy.GreeterImpl" />
+        </cxfse:pojo>
+        <cxfse:inInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+        </cxfse:inInterceptors>
+        <cxfse:outInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+        </cxfse:outInterceptors>
+        <cxfse:inFaultInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+        </cxfse:inFaultInterceptors>
+        <cxfse:outFaultInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+        </cxfse:outFaultInterceptors>
+      </cxfse:endpoint>
+      <cxfbc:consumer wsdl="/wsdl/greeter_control.wsdl"
+                      targetEndpoint="GreeterPort"
+                      targetService="greeter:BasicGreeterService"
+              targetInterface="greeter:Greeter"
+                      busCfg="org/apache/servicemix/cxfbc/ws/policy/addr.xml"
+                      >
+        <cxfbc:inInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+        </cxfbc:inInterceptors>
+        <cxfbc:outInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+        </cxfbc:outInterceptors>
+        <cxfbc:inFaultInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+        </cxfbc:inFaultInterceptors>
+        <cxfbc:outFaultInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+        </cxfbc:outFaultInterceptors>
+      </cxfbc:consumer>
+    </sm:endpoints>
+    
+  </sm:container>
+  
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/atmostonce.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/atmostonce.xml
new file mode 100644
index 0000000..a33631f
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/atmostonce.xml
@@ -0,0 +1,45 @@
+<?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:wsrm-mgr="http://cxf.apache.org/ws/rm/manager"
+    xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy"
+    xsi:schemaLocation="
+http://schemas.xmlsoap.org/ws/2005/02/rm/policy http://schemas.xmlsoap.org/ws/2005/02/rm/wsrm-policy.xsd
+http://cxf.apache.org/ws/rm/manager http://cxf.apache.org/schemas/configuration/wsrm-manager.xsd
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+    <import resource="rminterceptors.xml" />
+
+    <wsrm-mgr:rmManager id="org.apache.cxf.ws.rm.RMManager">
+        <wsrm-policy:RMAssertion>
+            <wsrm-policy:BaseRetransmissionInterval Milliseconds="60000" />
+            <wsrm-policy:AcknowledgementInterval Milliseconds="10000" />
+        </wsrm-policy:RMAssertion>
+        <wsrm-mgr:deliveryAssurance>
+            <wsrm-mgr:AtMostOnce />
+        </wsrm-mgr:deliveryAssurance>
+        <wsrm-mgr:destinationPolicy>
+            <wsrm-mgr:acksPolicy intraMessageThreshold="0" />
+        </wsrm-mgr:destinationPolicy>
+    </wsrm-mgr:rmManager>
+
+
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/decoupled.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/decoupled.xml
new file mode 100644
index 0000000..77bed1e
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/decoupled.xml
@@ -0,0 +1,63 @@
+<?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:http="http://cxf.apache.org/transports/http/configuration"
+       xsi:schemaLocation="
+http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+  
+    <http:conduit name="{http://cxf.apache.org/greeter_control}GreeterPort.http-conduit">
+      <http:client DecoupledEndpoint="http://localhost:9995/decoupled_endpoint"/>
+    </http:conduit>
+    
+    <bean id="mapAggregator" class="org.apache.cxf.ws.addressing.MAPAggregator"/>
+    <bean id="mapCodec" class="org.apache.cxf.ws.addressing.soap.MAPCodec"/>
+
+    <!-- We are adding the interceptors to the bus as we will have only one endpoint/service/bus. -->
+
+    <bean id="cxf" class="org.apache.cxf.bus.CXFBusImpl">
+        <property name="inInterceptors">
+            <list>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+            </list>
+        </property>
+        <property name="inFaultInterceptors">
+            <list>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+            </list>
+        </property>
+        <property name="outInterceptors">
+            <list>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+            </list>
+        </property>
+        <property name="outFaultInterceptors">
+            <list>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+            </list>
+        </property>
+    </bean>
+
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/deferred.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/deferred.xml
new file mode 100644
index 0000000..86d75db
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/deferred.xml
@@ -0,0 +1,41 @@
+<?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:wsrm-mgr="http://cxf.apache.org/ws/rm/manager"
+       xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy"
+       xsi:schemaLocation="
+http://schemas.xmlsoap.org/ws/2005/02/rm/policy http://schemas.xmlsoap.org/ws/2005/02/rm/wsrm-policy.xsd
+http://cxf.apache.org/ws/rm/manager http://cxf.apache.org/schemas/configuration/wsrm-manager.xsd
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+    
+    <import resource="rminterceptors.xml"/>
+    
+    <wsrm-mgr:rmManager id="org.apache.cxf.ws.rm.RMManager">
+    <wsrm-policy:RMAssertion>         
+          <wsrm-policy:BaseRetransmissionInterval Milliseconds="10000"/>           
+          <wsrm-policy:AcknowledgementInterval Milliseconds="2000"/>                                                        
+      </wsrm-policy:RMAssertion>
+      <wsrm-mgr:destinationPolicy>
+          <wsrm-mgr:acksPolicy intraMessageThreshold="0"/>                    
+      </wsrm-mgr:destinationPolicy>      
+    </wsrm-mgr:rmManager>
+    
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/inactivity-timeout.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/inactivity-timeout.xml
new file mode 100644
index 0000000..b4f5dd1
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/inactivity-timeout.xml
@@ -0,0 +1,38 @@
+<?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:wsrm-mgr="http://cxf.apache.org/ws/rm/manager"
+    xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy"
+    xsi:schemaLocation="
+http://schemas.xmlsoap.org/ws/2005/02/rm/policy http://schemas.xmlsoap.org/ws/2005/02/rm/wsrm-policy.xsd
+http://cxf.apache.org/ws/rm/manager http://cxf.apache.org/schemas/configuration/wsrm-manager.xsd
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+    <import resource="rminterceptors.xml" />
+
+    <wsrm-mgr:rmManager id="org.apache.cxf.ws.rm.RMManager">
+        <wsrm-policy:RMAssertion>
+            <wsrm-policy:InactivityTimeout Milliseconds="200" />
+        </wsrm-policy:RMAssertion>
+    </wsrm-mgr:rmManager>
+
+
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/message-loss-server.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/message-loss-server.xml
new file mode 100644
index 0000000..cce5fd8
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/message-loss-server.xml
@@ -0,0 +1,89 @@
+<?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:wsrm-mgr="http://cxf.apache.org/ws/rm/manager"
+    xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy"
+    xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
+    xsi:schemaLocation="
+http://schemas.xmlsoap.org/ws/2005/02/rm/policy http://schemas.xmlsoap.org/ws/2005/02/rm/wsrm-policy.xsd
+http://cxf.apache.org/ws/rm/manager http://cxf.apache.org/schemas/configuration/wsrm-manager.xsd
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+    <bean id="mapAggregator" class="org.apache.cxf.ws.addressing.MAPAggregator"/>
+    <bean id="mapCodec" class="org.apache.cxf.ws.addressing.soap.MAPCodec"/>
+    <bean id="rmLogicalOut" class="org.apache.cxf.ws.rm.RMOutInterceptor">
+        <property name="bus" ref="cxf"/>
+    </bean>
+    <bean id="rmLogicalIn" class="org.apache.cxf.ws.rm.RMInInterceptor">
+        <property name="bus" ref="cxf"/>
+    </bean>
+    <bean id="rmCodec" class="org.apache.cxf.ws.rm.soap.RMSoapInterceptor"/>
+    <bean id="messageLoss" class="org.apache.servicemix.cxfbc.ws.rm.MessageLossSimulator"/>
+
+    <!-- We are adding the interceptors to the bus as we will have only one endpoint/service/bus. -->
+
+    <bean id="cxf" class="org.apache.cxf.bus.CXFBusImpl">
+        <property name="inInterceptors">
+            <list>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+                <ref bean="rmLogicalIn"/>
+                <ref bean="rmCodec"/>
+            </list>
+        </property>
+        <property name="inFaultInterceptors">
+            <list>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+                <ref bean="rmLogicalIn"/>
+                <ref bean="rmCodec"/>
+            </list>
+        </property>
+        <property name="outInterceptors">
+            <list>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+                <ref bean="rmLogicalOut"/>
+                <ref bean="rmCodec"/>
+                <ref bean="messageLoss"/>
+            </list>
+        </property>
+        <property name="outFaultInterceptors">
+            <list>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+                <ref bean="rmLogicalOut"/>
+                <ref bean="rmCodec"/>
+            </list>
+        </property>
+    </bean>
+    
+    
+
+    <wsrm-mgr:rmManager id="org.apache.cxf.ws.rm.RMManager">
+        <wsrm-policy:RMAssertion>
+            <!-- avoid server side resends, change programatically for client -->
+            <wsrm-policy:BaseRetransmissionInterval Milliseconds="2000" />
+        </wsrm-policy:RMAssertion>
+    </wsrm-mgr:rmManager>
+
+
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/message-loss.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/message-loss.xml
new file mode 100644
index 0000000..946fdef
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/message-loss.xml
@@ -0,0 +1,41 @@
+<?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:wsrm-mgr="http://cxf.apache.org/ws/rm/manager"
+    xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy"
+    xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
+    xsi:schemaLocation="
+http://schemas.xmlsoap.org/ws/2005/02/rm/policy http://schemas.xmlsoap.org/ws/2005/02/rm/wsrm-policy.xsd
+http://cxf.apache.org/ws/rm/manager http://cxf.apache.org/schemas/configuration/wsrm-manager.xsd
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+    <import resource="rminterceptors.xml" />
+
+    <wsrm-mgr:rmManager id="org.apache.cxf.ws.rm.RMManager">
+        <wsrm-policy:RMAssertion>
+            <!-- avoid server side resends, change programatically for client -->
+            <wsrm-policy:BaseRetransmissionInterval Milliseconds="60000" />
+            <wsrm-policy:AcknowledgementInterval Milliseconds="2000" />
+        </wsrm-policy:RMAssertion>
+    </wsrm-mgr:rmManager>
+
+
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/no-offer.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/no-offer.xml
new file mode 100644
index 0000000..938b0b6
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/no-offer.xml
@@ -0,0 +1,42 @@
+<?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:wsrm-mgr="http://cxf.apache.org/ws/rm/manager"
+    xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy"
+    xsi:schemaLocation="
+http://schemas.xmlsoap.org/ws/2005/02/rm/policy http://schemas.xmlsoap.org/ws/2005/02/rm/wsrm-policy.xsd
+http://cxf.apache.org/ws/rm/manager http://cxf.apache.org/schemas/configuration/wsrm-manager.xsd
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+    <import resource="rminterceptors.xml" />
+
+    <wsrm-mgr:rmManager id="org.apache.cxf.ws.rm.RMManager">        
+        <wsrm-policy:RMAssertion>
+            <wsrm-policy:BaseRetransmissionInterval Milliseconds="60000" />
+            <wsrm-policy:AcknowledgementInterval Milliseconds="60000" />
+        </wsrm-policy:RMAssertion>
+        <wsrm-mgr:sourcePolicy includeOffer="false"/>
+        <wsrm-mgr:destinationPolicy>
+            <wsrm-mgr:acksPolicy intraMessageThreshold="0" />
+        </wsrm-mgr:destinationPolicy>
+    </wsrm-mgr:rmManager>
+
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/rminterceptors.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/rminterceptors.xml
new file mode 100644
index 0000000..6d3cb8f
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/rminterceptors.xml
@@ -0,0 +1,70 @@
+<?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"
+       xsi:schemaLocation="
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+    <bean id="mapAggregator" class="org.apache.cxf.ws.addressing.MAPAggregator"/>
+    <bean id="mapCodec" class="org.apache.cxf.ws.addressing.soap.MAPCodec"/>
+    <bean id="rmLogicalOut" class="org.apache.cxf.ws.rm.RMOutInterceptor">
+        <property name="bus" ref="cxf"/>
+    </bean>
+    <bean id="rmLogicalIn" class="org.apache.cxf.ws.rm.RMInInterceptor">
+        <property name="bus" ref="cxf"/>
+    </bean>
+    <bean id="rmCodec" class="org.apache.cxf.ws.rm.soap.RMSoapInterceptor"/>
+
+
+    <bean id="cxf" class="org.apache.cxf.bus.CXFBusImpl">
+        <property name="inInterceptors">
+            <list>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+                <ref bean="rmLogicalIn"/>
+                <ref bean="rmCodec"/>
+            </list>
+        </property>
+        <property name="inFaultInterceptors">
+            <list>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+                <ref bean="rmLogicalIn"/>
+                <ref bean="rmCodec"/>
+            </list>
+        </property>
+        <property name="outInterceptors">
+            <list>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+                <ref bean="rmLogicalOut"/>
+                <ref bean="rmCodec"/>
+            </list>
+        </property>
+        <property name="outFaultInterceptors">
+            <list>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+                <ref bean="rmLogicalOut"/>
+                <ref bean="rmCodec"/>
+            </list>
+        </property>
+    </bean>
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/seqlength1.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/seqlength1.xml
new file mode 100644
index 0000000..4af5c7e
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/seqlength1.xml
@@ -0,0 +1,35 @@
+<?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:wsrm-mgr="http://cxf.apache.org/ws/rm/manager"
+       xsi:schemaLocation="
+http://cxf.apache.org/ws/rm/manager http://cxf.apache.org/schemas/configuration/wsrm-manager.xsd
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+    <import resource="rminterceptors.xml" />
+
+    <wsrm-mgr:rmManager id="org.apache.cxf.ws.rm.RMManager">
+        <wsrm-mgr:sourcePolicy>
+            <wsrm-mgr:sequenceTerminationPolicy maxLength="1" />
+        </wsrm-mgr:sourcePolicy>
+    </wsrm-mgr:rmManager>
+
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/seqlength10.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/seqlength10.xml
new file mode 100644
index 0000000..f83070f
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/seqlength10.xml
@@ -0,0 +1,36 @@
+<?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:wsrm-mgr="http://cxf.apache.org/ws/rm/manager"
+    xmlns:http="http://cxf.apache.org/transports/http/configuration"
+    xsi:schemaLocation="
+http://cxf.apache.org/ws/rm/manager http://cxf.apache.org/schemas/configuration/wsrm-manager.xsd
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+    <import resource="rminterceptors.xml" />
+
+    <wsrm-mgr:rmManager id="org.apache.cxf.ws.rm.RMManager">
+        <wsrm-mgr:sourcePolicy>
+            <wsrm-mgr:sequenceTerminationPolicy maxLength="10" />
+        </wsrm-mgr:sourcePolicy>
+    </wsrm-mgr:rmManager>
+
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/sequence.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/sequence.xml
new file mode 100644
index 0000000..99c0d85
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/sequence.xml
@@ -0,0 +1,106 @@
+<?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:sm="http://servicemix.apache.org/config/1.0"
+       xmlns:cxfse="http://servicemix.apache.org/cxfse/1.0"
+       xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0"
+       xmlns:greeter="http://cxf.apache.org/greeter_control">
+  
+  <sm:container id="jbi" embedded="true">
+    
+    <sm:endpoints>
+      <cxfse:endpoint>
+        <cxfse:pojo>
+          <bean class="org.apache.servicemix.cxfbc.ws.rm.ControlImpl" />
+        </cxfse:pojo>
+        <cxfse:inInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+        </cxfse:inInterceptors>
+        <cxfse:outInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+        </cxfse:outInterceptors>
+        <cxfse:inFaultInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+        </cxfse:inFaultInterceptors>
+        <cxfse:outFaultInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+        </cxfse:outFaultInterceptors>
+      </cxfse:endpoint>
+      <cxfse:endpoint>
+        <cxfse:pojo>
+          <bean class="org.apache.servicemix.cxfbc.ws.rm.GreeterImpl" />
+        </cxfse:pojo>
+        <cxfse:inInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+        </cxfse:inInterceptors>
+        <cxfse:outInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+        </cxfse:outInterceptors>
+        <cxfse:inFaultInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+        </cxfse:inFaultInterceptors>
+        <cxfse:outFaultInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+        </cxfse:outFaultInterceptors>
+      </cxfse:endpoint>
+      <cxfbc:consumer wsdl="/wsdl/greeter_control.wsdl"
+                      targetEndpoint="ControlPort"
+                      targetService="greeter:ControlService"
+              targetInterface="greeter:Control"
+                      >
+        <cxfbc:inInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+        </cxfbc:inInterceptors>
+        <cxfbc:outInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+        </cxfbc:outInterceptors>
+        <cxfbc:inFaultInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+        </cxfbc:inFaultInterceptors>
+        <cxfbc:outFaultInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+        </cxfbc:outFaultInterceptors>
+      </cxfbc:consumer>
+      <cxfbc:consumer wsdl="/wsdl/greeter_control.wsdl"
+                      targetEndpoint="GreeterPort"
+                      targetService="greeter:GreeterService"
+                      targetInterface="greeter:Greeter"
+                      busCfg="org/apache/servicemix/cxfbc/ws/rm/rminterceptors.xml"
+                      >
+        <cxfbc:inInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+        </cxfbc:inInterceptors>
+        <cxfbc:outInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+          <!--WrappedOutInterceptor and BareOutInterceptor are used for send back ws-rm message-->
+          <bean class="org.apache.cxf.interceptor.WrappedOutInterceptor"/>
+          <bean class="org.apache.cxf.interceptor.BareOutInterceptor"/>
+        </cxfbc:outInterceptors>
+        <cxfbc:inFaultInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+        </cxfbc:inFaultInterceptors>
+        <cxfbc:outFaultInterceptors>
+          <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+        </cxfbc:outFaultInterceptors>
+      </cxfbc:consumer>
+    </sm:endpoints>
+    
+  </sm:container>
+
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/server.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/server.xml
new file mode 100644
index 0000000..c6de264
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/server.xml
@@ -0,0 +1,94 @@
+<?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:jaxws="http://cxf.apache.org/jaxws"
+    xmlns:test="http://cxf.apache.org/greeter_control"
+    xmlns:cxf="http://camel.apache.org/schema/cxf"
+    xmlns:camel="http://camel.apache.org/schema/spring"
+    xmlns:http="http://cxf.apache.org/transports/http/configuration"
+    xsi:schemaLocation="
+        http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
+        http://www.springframework.org/schema/beans                     http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+        http://cxf.apache.org/jaxws                                     http://cxf.apache.org/schemas/jaxws.xsd
+        http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd
+        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+    ">
+    <import resource="classpath:META-INF/cxf/cxf.xml"/>
+    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
+    <import resource="classpath:META-INF/cxf/cxf-extension-http-jetty.xml"/>
+    <import resource="classpath:META-INF/cxf/cxf-extension-http.xml"/>
+    <import resource="classpath:META-INF/cxf/cxf-extension-local.xml" />
+    
+    <bean class="org.apache.camel.component.cxf.transport.CamelTransportFactory" lazy-init="true">
+        <property name="bus" ref="cxf"/>
+        <property name="camelContext" ref="camel_context"/>
+        <property name="transportIds">
+            <list>
+              <value>http://cxf.apache.org/transports/camel</value>
+            </list>
+        </property>
+    </bean>
+    <http:conduit name="{http://cxf.apache.org/greeter_control}GreeterPort.http-conduit">
+      <http:client AllowChunking="false" DecoupledEndpoint="http://localhost:9995/decoupled_endpoint"/>
+    </http:conduit>    
+    <camel:camelContext id="camel_context">
+    </camel:camelContext>
+
+    <bean id="mapAggregator" class="org.apache.cxf.ws.addressing.MAPAggregator"/>
+    <bean id="mapCodec" class="org.apache.cxf.ws.addressing.soap.MAPCodec"/>
+    <cxf:cxfEndpoint id="routerEndpoint" name="test:GreeterPort" address="camel://jetty:http://localhost:9020/SoapContext/GreeterPort"  serviceClass="org.apache.cxf.greeter_control.Greeter">
+        <cxf:properties>
+            <entry key="dataFormat" value="POJO"/>
+            <entry key="setDefaultBus" value="true"/>
+        </cxf:properties>
+        <cxf:features>
+            <bean class="org.apache.cxf.feature.LoggingFeature"/>
+        </cxf:features>
+        <cxf:outInterceptors>
+            <ref bean="mapAggregator"/>
+            <ref bean="mapCodec"/>
+        </cxf:outInterceptors>
+        <cxf:inInterceptors>
+            <ref bean="mapCodec"/>
+            <ref bean="mapAggregator"/>
+        </cxf:inInterceptors>
+        
+        <cxf:outFaultInterceptors>
+            <ref bean="mapAggregator"/>
+            <ref bean="mapCodec"/>
+        </cxf:outFaultInterceptors>
+        <cxf:inFaultInterceptors>
+            <ref bean="mapCodec"/>
+            <ref bean="mapAggregator"/>
+        </cxf:inFaultInterceptors>
+
+    </cxf:cxfEndpoint>
+
+
+    <cxf:cxfEndpoint id="serviceEndpoint" address="local://smx/hello_world"
+      serviceClass="org.apache.cxf.greeter_control.Greeter">
+        <cxf:properties>
+            <entry key="dataFormat" value="POJO"/>
+            <entry key="setDefaultBus" value="true"/>
+        </cxf:properties>
+    </cxf:cxfEndpoint>
+
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/suppressed.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/suppressed.xml
new file mode 100644
index 0000000..df97f46
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/suppressed.xml
@@ -0,0 +1,41 @@
+<?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:wsrm-mgr="http://cxf.apache.org/ws/rm/manager"
+    xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy"
+    xsi:schemaLocation="
+http://schemas.xmlsoap.org/ws/2005/02/rm/policy http://schemas.xmlsoap.org/ws/2005/02/rm/wsrm-policy.xsd
+http://cxf.apache.org/ws/rm/manager http://cxf.apache.org/schemas/configuration/wsrm-manager.xsd
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+    <import resource="rminterceptors.xml" />
+    
+    <wsrm-mgr:rmManager id="org.apache.cxf.ws.rm.RMManager">
+        <wsrm-policy:RMAssertion>
+            <wsrm-policy:BaseRetransmissionInterval Milliseconds="3000" />
+            <wsrm-policy:AcknowledgementInterval Milliseconds="99999999" />
+        </wsrm-policy:RMAssertion>
+        <wsrm-mgr:destinationPolicy>
+            <wsrm-mgr:acksPolicy intraMessageThreshold="0" />
+        </wsrm-mgr:destinationPolicy>        
+    </wsrm-mgr:rmManager>
+
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/terminate-on-shutdown.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/terminate-on-shutdown.xml
new file mode 100644
index 0000000..2b3948d
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/terminate-on-shutdown.xml
@@ -0,0 +1,44 @@
+<?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:wsrm-mgr="http://cxf.apache.org/ws/rm/manager"
+       xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy"
+       xsi:schemaLocation="
+http://schemas.xmlsoap.org/ws/2005/02/rm/policy http://schemas.xmlsoap.org/ws/2005/02/rm/wsrm-policy.xsd
+http://cxf.apache.org/ws/rm/manager http://cxf.apache.org/schemas/configuration/wsrm-manager.xsd
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+    
+    <import resource="rminterceptors.xml"/>
+    
+    <wsrm-mgr:rmManager id="org.apache.cxf.ws.rm.RMManager">
+      <wsrm-policy:RMAssertion>         
+          <wsrm-policy:BaseRetransmissionInterval Milliseconds="10000"/>           
+          <wsrm-policy:AcknowledgementInterval Milliseconds="10000"/>                                                        
+      </wsrm-policy:RMAssertion>      
+      <wsrm-mgr:sourcePolicy>
+          <wsrm-mgr:sequenceTerminationPolicy terminateOnShutdown="true"/>                    
+      </wsrm-mgr:sourcePolicy>
+      <wsrm-mgr:destinationPolicy>
+          <wsrm-mgr:acksPolicy intraMessageThreshold="0"/>                    
+      </wsrm-mgr:destinationPolicy>      
+    </wsrm-mgr:rmManager>
+    
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/twoway-endpoint-specific.xml b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/twoway-endpoint-specific.xml
new file mode 100644
index 0000000..f60dbb2
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/rm/twoway-endpoint-specific.xml
@@ -0,0 +1,96 @@
+<?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"
+       xsi:schemaLocation="
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+  
+  
+    <!-- Endpoint Level Interceptors-->
+    <!-- Inserted From JaxWsEndpointImpl, EndpointImpl-->
+    <bean id="wrapperClassIn" class="org.apache.cxf.jaxws.interceptors.WrapperClassInInterceptor"/>
+    <bean id="wrapperClassOut" class="org.apache.cxf.jaxws.interceptors.WrapperClassOutInterceptor"/>
+    <bean id="holderIn" class="org.apache.cxf.jaxws.interceptors.HolderInInterceptor"/>
+    <bean id="holderOut" class="org.apache.cxf.jaxws.interceptors.HolderOutInterceptor"/>
+    <bean id="clientFaultConv" class="org.apache.cxf.interceptor.ClientFaultConverter"/>
+    <bean id="messageSender" class="org.apache.cxf.interceptor.MessageSenderInterceptor"/>
+    <!-- Cannot use via config -->
+    <!--
+    <bean id="soapHandler" class="org.apache.cxf.jaxws.handler.soap.SOAPHandlerInterceptor"/>
+    <bean id="logicalHandler" class="org.apache.cxf.jaxws.handler.LogicalHandlerInterceptor"/>
+    -->
+    
+    <!-- WSA Interceptors-->
+    <bean id="mapAggregator" class="org.apache.cxf.ws.addressing.MAPAggregator"/>
+    <bean id="mapCodec" class="org.apache.cxf.ws.addressing.soap.MAPCodec"/>
+
+    <!-- WS-RM Interceptors-->
+    <bean id="rmLogicalOut" class="org.apache.cxf.ws.rm.RMOutInterceptor">
+        <property name="bus" ref="cxf"/>
+    </bean>
+    <bean id="rmLogicalIn" class="org.apache.cxf.ws.rm.RMInInterceptor">
+        <property name="bus" ref="cxf"/>
+    </bean>
+    <bean id="rmCodec" class="org.apache.cxf.ws.rm.soap.RMSoapInterceptor"/>
+
+    <!-- Logging and Utility Interceptor-->
+    <bean id="logInbound" class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+    <bean id="logOutbound" class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+
+    <!--WS-A Interceptors not required in Fault Chain-->
+    <bean id="cxf" class="org.apache.cxf.bus.CXFBusImpl">
+        <property name="inInterceptors">
+            <list>
+                <ref bean="rmLogicalIn"/>
+                <ref bean="rmCodec"/>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+                <ref bean="wrapperClassIn"/>
+                <ref bean="holderIn"/>
+            </list>
+        </property>
+        <property name="inFaultInterceptors">
+            <list>
+                <ref bean="clientFaultConv"/>
+            </list>
+        </property>
+        <property name="outInterceptors">
+            <list>
+                <ref bean="rmLogicalOut"/>
+                <ref bean="rmCodec"/>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+                <ref bean="wrapperClassOut"/>
+                <ref bean="holderOut"/>
+                <ref bean="messageSender"/>
+            </list>
+        </property>
+        <property name="outFaultInterceptors">
+            <list>
+                <ref bean="rmLogicalOut"/>
+                <ref bean="rmCodec"/>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+                <ref bean="messageSender"/>
+            </list>
+        </property>
+    </bean> 
+
+</beans>
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/security/alice.jks b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/security/alice.jks
new file mode 100644
index 0000000..5bd162b
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/security/alice.jks
Binary files differ
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/security/alice.properties b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/security/alice.properties
new file mode 100644
index 0000000..1063fe1
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/security/alice.properties
@@ -0,0 +1,23 @@
+#
+#    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.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=password
+org.apache.ws.security.crypto.merlin.keystore.alias=alice
+org.apache.ws.security.crypto.merlin.file=src/test/resources/org/apache/servicemix/camel/ws/security/alice.jks
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/security/bob.jks b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/security/bob.jks
new file mode 100644
index 0000000..a4f49c5
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/security/bob.jks
Binary files differ
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/security/bob.properties b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/security/bob.properties
new file mode 100644
index 0000000..f10ab82
--- /dev/null
+++ b/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/security/bob.properties
@@ -0,0 +1,23 @@
+#
+#    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.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=password
+org.apache.ws.security.crypto.merlin.keystore.alias=bob
+org.apache.ws.security.crypto.merlin.file=src/test/resources/org/apache/servicemix/camel/ws/security/bob.jks
diff --git a/trunk/camel/servicemix-camel/src/test/resources/org/apache/servicemix/camel/ws/security/client.xml