/*
 * 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 3.4.1
                      =======================

**
NB: Apache ServiceMix 3.4.1 is the latest release for the SMX3 branch.
Apache ServiceMix 3 will go in End Of Life at the end of year 2012.
We encourage all users to upgrade to ServiceMix 4.
**

See the README file for more general informations about ServiceMix.


ServiceMix URLs:
----------------
Home Page:     http://incubator.apache.org/servicemix/
Downloads:     http://incubator.apache.org/servicemix/download.html
Documentation: http://incubator.apache.org/servicemix/documentation.html
Mailing Lists: http://incubator.apache.org/servicemix/mailing-lists.html
Source Code:   http://incubator.apache.org/servicemix/source.html
Bug Tracking:  http://issues.apache.org/activemq/browse/SM

Changes:
--------
 ServiceMix 3.4.1
** Bug
    * [SM-2115] - ensure cxf servlet transport and cxf bc can share same bus out of box when deploy smx-cxf-bc in web container
    * [SM-2141] - Leak in servicemix-eip when handling late responses
    * [SM-2142] - Memory leak when deploying ServiceMix as WAR in Tomcat
    * [SM-2150] - Building of ServiceMix :: Samples :: Loan Broker :: fails
    * [SM-2153] - PropertiesLoginModule always leave file handler open 
    * [SM-2158] - "too many open files" exception causes undeployment of all components
** Improvement
    * [SM-2131] - Start script improvements: config file, better handling of file limits, permgen
    * [SM-2156] - Upgrade to XBean 3.11.1
** Task
    * [SM-2159] - Upgrade to ServiceMix Components 2011.02.1

 ServiceMix 3.4
** Sub-task
    * [SM-2096] - MBean lookup failures in web console
    * [SM-2097] - Ant tasks should allow interacting with ServiceMix running in WebSphere
** Bug
    * [SM-1206] - ClientFactory JNDI bind fails in non-standalone ServiceMix installs
    * [SM-1438] - Exceptions while shutting down ServiceMix
    * [SM-1456] - Statistics Service throws NPE on startup.
    * [SM-1521] - Released version of archetype-catalog is corrupt
    * [SM-1823] - JaasAuthenticationService not properly authenticating certificate chains.
    * [SM-1863] - Exceptions for SOAP calls after retrieving WSDL
    * [SM-1887] - should ship only one bcprov version in the kit
    * [SM-1949] - Upgrade stax-api version
    * [SM-1958] - ServiceMix 3 doesn't start correctly due to NoClassDefFoundError on ActiveMQ bean
    * [SM-1972] - Missing javax.annotation causes exceptions on AIX
    * [SM-1995] - Maven tries to download several resources from java.net repository that aren't there.
    * [SM-2025] - ServiceMix fails to start if SU hangs during startup
    * [SM-2026] - ServiceMix does not start some components if some component failed during start
    * [SM-2030] - SMX3 doesn't build
    * [SM-2037] - Cant use servicemix start just after installation
    * [SM-2056] - Upgrade to JAXB 2.2 and include JAXB API in the container lib
    * [SM-2057] - Add JAX-WS in the distribution kit
    * [SM-2066] - Reinclude lightweight component into build
    * [SM-2071] - lots of tests failure in common/servicemix-components
    * [SM-2075] - Basic examples doesn't work
    * [SM-2077] - ServiceMix wsn2005 doesn't start correctly on SMX3
    * [SM-2094] - Duplicate entry for wsnotificationCF
    * [SM-2111] - kit miss spring-jms jar
    * [SM-2117] - Fail to uninstall components after container restart
    * [SM-2119] - Hardcoded parameters are used instead of ones in property files in default configuration
    * [SM-2129] - NullPointerException at org.apache.servicemix.jbi.framework.DeploymentService.start(DeploymentService.java:390)
    * [SM-2137] - Each call to a servicemix-http endpoint, in apache-servicemix-web deployed on Apache Tomcat, opens a new session.
** Improvement
    * [SM-1573] - Use of useJBIWrapper flag in smx-cxf-bc consumer and smx-http soap-consumer endpoints is inconsistent
    * [SM-1659] - should filter the version for kit_camel_example_pom.xml which is used in kit
    * [SM-1660] - add createDaemonExecutor api for ExecutorFactory
    * [SM-1945] - Upgrade to ActiveMQ 5.3.1
    * [SM-1950] - Upgrade to ActiveMQ 5.3.2
    * [SM-1960] - Upgrade to log4j 1.2.16
    * [SM-1962] - Upgrade ServiceMix 3.3 to use Spring 3
    * [SM-1964] - JMS Flow only uses one connection even with a PooledConnectionFactory
    * [SM-1965] - Prepare the upgrade to ActiveMQ 5.4.0
    * [SM-1966] - Upgrade to Camel 2.4.0
    * [SM-1971] - Upgrade to Spring 3.0.3.RELEASE
    * [SM-1973] - Upgrade to ActiveMQ 5.4.0
    * [SM-1996] - Upgrade to ActiveMQ 5.4.1
    * [SM-1997] - Upgrade to CXF 2.2.10
    * [SM-1998] - Upgrade to Camel 2.5.0
    * [SM-2001] - Make the executors/threadpool viewable as JMX mbeans
    * [SM-2007] - Components should use separate thread pools for consumer and provider endpoints
    * [SM-2019] - Upgrade to ActiveMQ 5.4.2
    * [SM-2024] - Improve message flow logging
    * [SM-2031] - Upgrade to SMX components 2010.02
    * [SM-2032] - Upgrade to slf4j 1.5.8
    * [SM-2035] - Upgrade to Spring 3.0.5.RELEASE
    * [SM-2039] - Upgrade to CXF 2.3.2
    * [SM-2040] - Upgrade to Camel 2.6.0
    * [SM-2041] - Upgrade to ServiceMix Components 2011.01
    * [SM-2043] - SimpleEndpoint fail method error is not logged
    * [SM-2070] - update woodstox stax2-api to 3.0.2
    * [SM-2072] - upgrade to jetty 6.1.26 for smx3
    * [SM-2076] - Avoid usage of jbi:projectDeploy in examples
    * [SM-2095] - Improve compatibility with WebSphere (WAR deployment)
    * [SM-2103] - Fix ServiceMix 3 build to get rid of warnings in Maven 3
    * [SM-2118] - Container is in inconsistent state just after start
    * [SM-2133] - Upgrade to Camel 2.8.3
    * [SM-2139] - Upgrade to ActiveMQ 5.5.1
** New Feature
    * [SM-1756] - add CXFManagedServlet to apache-servicemix-web to enable servicemix-cxf-bc endpoint deploy into servlet container without starting jetty
    * [SM-1977] - Support exploded JBI artifacts
** Task
    * [SM-1877] - update wss4j to 1.5.8
    * [SM-1951] - upgrade to cxf 2.2.8
    * [SM-1954] - upgrade to cxf 2.2.9
    * [SM-2048] - Switch to use slf4j as logger (instead of commons-logging)
    * [SM-2055] - Release ServiceMix 3.4
    * [SM-2079] - Upgrade ServiceMix 3 to use JBI maven plugin 4.5
    * [SM-2084] - Upgrade to Camel 2.7.1
    * [SM-2085] - Upgrade to CXF 2.3.3
    * [SM-2086] - Upgrade to ServiceMix Specs 1.8.0
    * [SM-2090] - Upgrade to Camel 2.8.0
    * [SM-2093] - upgrade to cxf 2.4.1
    * [SM-2116] - upgrade to cxf 2.4.2
    * [SM-2120] - Camel log level should be set
    * [SM-2123] - Upgrade to Camel 2.8.1
    * [SM-2128] - upgrade to spring 3.0.6
    * [SM-2130] - upgrade to cxf 2.4.4
** Test
    * [SM-1306] - Improve success ratio of timing sensitive tests
    * [SM-1968] - Use dynamic port for tests

 ServiceMix 3.3.2
** Bug
    * [SM-1875] - Use new snapshot repository location in archetypes
    * [SM-1887] - should ship only one bcprov version in the kit
    * [SM-1892] - Port property is not passed to any Servicemix Ant tasks in servicemix-ant-tasks.xml (install-component, etc)
    * [SM-1914] - ServiceMix fails to start when JAVA is installed under path containing spaces
    * [SM-1915] - Support more fine-grained authorization on JMX access
    * [SM-1924] - @{releases-repo-url} not filtered in smx-arch/smx-arch.bat
    * [SM-1925] - Add security check on remote broker when using JMSFlow/JCAFlow
    * [SM-1926] - Statistics Service throws NPE with DynamicEndpoints
    * [SM-1933] - Sample poms refer to people.apache.org instead of repository.apache.org for snapshot
    * [SM-1935] - samples pom has SNAPSHOT dependency in kit
    * [SM-1940] - Schemas folder doesn't contain all components xsd
    * [SM-1941] - Add servicemix-vfs component in the distribution
    * [SM-1942] - Scripts in bin folder don't depend of the distribution format
** Improvement
    * [SM-1878] - refactor client.html used in cxf-wsdl-first
    * [SM-1899] - Upgrade to jenck 2.2
    * [SM-1903] - Upgrade Apache ActiveMQ 5.3
    * [SM-1905] - Upgrade ServiceMix 3 to ActiveMQ 5.3
    * [SM-1922] - remove unnecessary kit_camel_example_pom.xml from camel example of kit
    * [SM-1928] - Upgrade to ActiveMQ 5.3
    * [SM-1929] - Upgrade SMX3 to use CXF 2.2.6
    * [SM-1937] - Incorrect logic in throttle method of DeliveryChannelImpl.java
    * [SM-1944] - Use ServiceMix Components 2010.01
** New Feature
    * [SM-788] - start/stop/restart on ServiceMix
** Task
    * [SM-1911] - Upgrade Derby to 10.5.3.0_1
    * [SM-1930] - Upgrade geronimo jars to 2.1.1+
    * [SM-1936] - Upgrade to use JavaMail 1.4.3
** Wish
    * [SM-1864] - Add a sample showing the usage of servicemix-bean with a database backend

ServiceMix 3.3.1
** Bug
    * [SM-1438] - Exceptions while shutting down ServiceMix
    * [SM-1456] - Statistics Service throws NPE on startup.
    * [SM-1654] - Format of the Message cannot be different than XML within Camel
    * [SM-1657] - Auto-enlistment should only occur when transactions status is ACTIVE
    * [SM-1685] - The DeliveryChannel does not recognize the new MessageExchangeListener interface
    * [SM-1712] - ExchangeListener is called with exchangeSent instead of exchangeAccepted when using sendSync
    * [SM-1713] - servicemix common component should be moved before deployable as servicemix-lwcontainer need it. (this was fixed in 3.2 but not on trunk)
    * [SM-1719] - org.apache.servicemix.jdbc.JDBCAdapter : bug in Statements and add of new functionnality doLoadData
    * [SM-1749] - Incorrect Logger name creation in ComponentContextImpl
    * [SM-1761] - AutoDeployment stops working after x deployments
    * [SM-1766] - servicemix-web sample in Servicemix 3 trunk is broken because of the removal of ManagedHttpServlet from servicemix-http component.
    * [SM-1773] - xercesImpl and xml-apis conflict when running inside Jboss
    * [SM-1791] - org.apache.servicemix.jbi.framework.InstallerMBeanImpl is missing bootstrap.init() call on uninstall phase which is required as per JBI specs.
    * [SM-1818] - invoking stop on SA in SHUTDOWN state brings it to STOPPED state
    * [SM-1819] - jms archetypes generate extra http:// for xmlns:xsi namespace.
    * [SM-1820] - Almost all archetypes generate extra http:// for xmlns:xsi namespace.
    * [SM-1824] - BUG in JDK6 ReentrantReadWriteLock can cause SMX hang when redeploy SA
    * [SM-1827] - servicemix-camel-service-unit archetype depends on non-existent servicemix-camel jbi-component
    * [SM-1835] - whitespace interfering with ResolvedEndpoint.resolveEndpoint()
    * [SM-1845] - keystore.jks should be filtered during distribution package
    * [SM-1853] - ClassCast exception in ClassLoaderXmlPreprocessor
** Improvement
    * [SM-1317] - Add a system property to change CXF to use Log4J instead of JUL
    * [SM-1360] - Add a reference to the XSD in the archetype-generated xbean.xml files
    * [SM-1573] - Use of useJBIWrapper flag in smx-cxf-bc consumer and smx-http soap-consumer endpoints is inconsistent
    * [SM-1607] - JBI container should be able to initialize all SAs first and then start them
    * [SM-1621] - New JMS in/out provider should support temporary queues/topics (as reply destinations)
    * [SM-1659] - should filter the version for kit_camel_example_pom.xml which is used in kit
    * [SM-1660] - add createDaemonExecutor api for ExecutorFactory
    * [SM-1688] - update classworlds version from 1.0.1 to 1.1
    * [SM-1717] - getError() shouldn't return a null exception in case of sendSync timeout
    * [SM-1808] - Back port the patch of SMXCOMP-455 to SMX 3.2 branch
    * [SM-1810] - should use new activemq namsespace instead of the old one
    * [SM-1817] - Publish components schema files as part of the distribution in a schemas/ directory
    * [SM-1822] - Add JMS connection credentials to JCAFlow
    * [SM-1843] - pick up new added bridge-camel sample in the distribution kit
    * [SM-1848] - add client.html for wsn-http-binding example
    * [SM-1870] - Upgrade to Geronimo 2.0.2
** New Feature
    * [SM-1756] - add CXFManagedServlet to apache-servicemix-web to enable servicemix-cxf-bc endpoint deploy into servlet container without starting jetty
    * [SM-1782] - Add JBoss Deployer to platforms module
    * [SM-1856] - Add archetype for servicemix-smpp component
** Task
    * [SM-1723] - Upgrade to ActiveMQ 5.2.0
    * [SM-1846] - add wsn-cxfbc-binding example
    * [SM-1867] - upgrade to spring 2.5.6
** Test
    * [SM-1306] - Improve success ratio of timing sensitive tests
    * [SM-1811] - bridge-sa-itest failed due to missing activemq-camel dependency

ServiceMix 3.3
** Bug
    * [SM-607] - Files dropped into the install directory sometimes result in a "file in use by another process" error
    * [SM-1051] - servicemix.bat contains unix style environment variables, instead of all windows style environment variables
    * [SM-1111] - Endpoint operation information lost when routing through camel
    * [SM-1131] - Redeployment fails for Geronimo integration
    * [SM-1132] - No clean shutdown of ServiceMix
    * [SM-1143] - Both wsdl-first-sa projects have the same artifactId
    * [SM-1145] - NoClassDefFound (org.springframework.aop.support.AopUtils) when deploying the Camel example
    * [SM-1149] - the resource path shouldn't include any "target" to avoid being filtered when build the src kit
    * [SM-1151] - LwContainer test has the version number hard coded inside
    * [SM-1156] - SE archetype references but does not generate MyBootstrap class
    * [SM-1157] - maven-jbi-plugin creates wrong classpath entries in jbi.xml for SE
    * [SM-1161] - jbi-service-unit causes infinite loop when dependency graph is not cycle-free
    * [SM-1170] - Geronimo deployer and plugin build failures
    * [SM-1172] - namespace prefix missing from jbi mesage to soap message
    * [SM-1175] - spring-jmx is dependent on spring-aop and needs included in the servicemix/lib directory
    * [SM-1178] - Security subject is not propagated in a cluster
    * [SM-1180] - in message truncated after first read from HTTP Consumer
    * [SM-1181] - Incorrect groupId for JAXB API in parent pom
    * [SM-1186] - NormalizedMessageImpl.getAttachment() returns DataHandler when it should return null
    * [SM-1189] - Race condintion in Auto Deployer
    * [SM-1197] - Archetype itests failing
    * [SM-1201] - Move mock classes from servicemix-soap2 subproject to a better location
    * [SM-1202] - Maven plugin not including jbi.xml and legal files in SA artifacts
    * [SM-1214] - Sitemesh TLD contains illegal short-name in web-console
    * [SM-1217] - Deployment fails with ZipException
    * [SM-1224] - Maven archetype plugin unable to locate servicemix-* archetypes
    * [SM-1240] - jbi:embeddedServicemix goal does not wait forever anymore
    * [SM-1257] - Camel version in trunk POM not available in Apache Snapshot Repo
    * [SM-1262] - SMX 3.2 org.apache.servicemix.lwcontainer.LwContainerComponentTest fails if the maven repository location is non-default.
    * [SM-1263] - LwContainerComponentTest fails on windows on the 3.2.2 branch
    * [SM-1267] - maven-jbi-plugin refuses to include jbi-component jars into SE packages
    * [SM-1273] - Add repository entry for java.net dependencies
    * [SM-1274] - Deployables should build before archetypes
    * [SM-1276] - ServiceMix 3.2 deployables/serviceengines/servicemix-lwcontainer had test dependency on servicemix-quartz but SMX-quartz get build later than lwcontainer component.
    * [SM-1278] - While using DefaultMessageListenerContainer transactions are not properly rolled back
    * [SM-1283] - SMX 3.2 deployables should build serviceengines before bindingcomponents to avoid servicemix-cxf-bc test failure on clean repo.
    * [SM-1285] - Missing jar sin the distribution of ServiceMix-web 3.2.1
    * [SM-1295] - BinaryFileMarshaler does not work with FTPPoller Endpoint
    * [SM-1296] - The lightweight container should allow deployment of SUs without any enpoints
    * [SM-1312] - build broken for servicemix-wsn2005 module
    * [SM-1318] - cxf bc provider should load transport according to endpoint from wsdl but not hardcoded
    * [SM-1325] - README update for the servicemix-web sample
    * [SM-1349] - SimpleFlatFileMarshaler runs out of memory on big files
    * [SM-1357] - EL in web console are not evaluated in WebSphere 6.1
    * [SM-1368] - Bug with backslashes in SMX 3.2.2-SNAPSHOT under Windows
    * [SM-1369] - all modules in servicemix build failed when generate checkstyle report since it expect a LICENSE file in current folder
    * [SM-1393] - ServiceMix client does not send the DONE status when using the request() method
    * [SM-1396] - NoSuchMethodException .ArtifactResolutionResult.setArtifactResolutionNodes(Ljava/util/Set;)V with M2Eclipse / Maven 2.1
    * [SM-1420] - Some servicemix pom refer to repo.mergere.com which is not online so needs to be changed to repo1.maven.org
    * [SM-1425] - Property 'property' not found when xmlns="http://www.springframework.org/schema/beans" is defined
    * [SM-1440] - ServiceMix 3 build is failing due to dependency relocation/rename.
    * [SM-1443] - The servicemix-binding-component archetype test named MySpringComponentTest is missing a public constructor
    * [SM-1455] - Reduce dependency cycle between ServiceMix 3 container and the components
    * [SM-1457] - problems building 3.3-SNAPSHOT rev 675963 - missing dependencies
    * [SM-1472] - servicemix-archetypes-itests tests failed
    * [SM-1489] - camelendpoint should transform StreamSource to DomSource which support to be consumed multiple times
    * [SM-1492] - smx-arch(.bat) uses wrong version for archetypes
    * [SM-1495] - Missing dependency lib xstream
    * [SM-1496] - jbi-maven-plugin fails on build
    * [SM-1504] - Old version of wsdl4j.jar
    * [SM-1531] - make servicemix-utils build successfully
    * [SM-1546] - Namespace declarations missing in some cases when using the FragmentStreamReader / StaxSource
    * [SM-1550] - Exchange Listeners may not be receiving all events
    * [SM-1564] - wrong cxf version in main pom
    * [SM-1582] - add wsdl4j dependency explicitly for jbi-maven-plugin
    * [SM-1622] - servicemix-eip content enricher should copy original message properties in the way the pipeline does
    * [SM-1626] - basic sample failed with trunk
    * [SM-1627] - loan-broker sample doesn't work
    * [SM-1628] - ws-notification sample doesn't
    * [SM-1641] - remoteRepositories is incorrect in smx-arch scripts
    * [SM-1658] - can't shundown container from jmx console
    * [SM-1757] - TransformComponentSupport does not handle errors nor does it support robust-in-only MEPs
    * [SM-1854] - AutoDeploymentService does not stop SA before shutting it down
** Improvement
    * [SM-810] - Create single complete ServiceMix Shared Library
    * [SM-908] - Upgrade to ActiveMQ 5.0
    * [SM-1135] - Put mandatory osgi entries in the JBI artifacts so that those artifacts can be deployed as bundles
    * [SM-1150] - Additional Flow configuration for Geronimo ServiceMix Service
    * [SM-1174] - update cxf version used in servicemix
    * [SM-1218] - ServiceMix logging refers to the incubator website
    * [SM-1222] - FilePoller and FileSender archetypes
    * [SM-1246] - Deprecate backport-util-concurrent since ServiceMix requires Java 5
    * [SM-1264] - Cleanup the servicemix-binding-component archetype so the BCs it creates pass the Checkstyle rules
    * [SM-1284] - should avoid using hardcode lib version of ws-notification sample
    * [SM-1315] - Enhance logging inside TraceComponent.java to log NormalizedMassage properties
    * [SM-1320] - Add the maven-remote-resources-plugin to the build to automatically produce NOTICE, LICENSE and DEPENDENCIES files
    * [SM-1333] - Support custom line separator for SimpleFlatFileMarshaler
    * [SM-1355] - XML escaping converter for SimpleFlatFileMarshaler
    * [SM-1358] - JAXPXPathExpression subclass returning any kind of object not only String
    * [SM-1359] - Increase the default size of the thread pool
    * [SM-1363] - Update the default persistence adapter from journaledJDBC to amqPersistenceAdapter
    * [SM-1367] - Provide logging statements when doing authorization in SMX
    * [SM-1381] - Upgrade to Activemq 5.1.0
    * [SM-1403] - Clean up the ServiceMix example of Camel
    * [SM-1415] - Allow specifying an encoding on the DefaultFileMarshaler
    * [SM-1432] - information when no deployed service units or service assemblies found
    * [SM-1447] - Add support for using Spring 2.5 as well as 2.0 in ServiceMix web console
    * [SM-1452] - remove camel-itests from camel example in kit
    * [SM-1453] - Upgrade to Spring 2.5.5
    * [SM-1494] - Improve the generated schema documentation for the core component properties
    * [SM-1506] - ServiceMix message priority patch
    * [SM-1542] - Modify servicemix-web sample pom file to include jetty <stopKey> and <stopPort> configuration for gracefully stopping jetty plugin.
    * [SM-1574] - Allow forced shutdown of the container by cancelling pending sendSync exchanges
    * [SM-1579] - The registry should be shutdown before the flow so that existing exchanges can be correctly processed before stopping
    * [SM-1586] - Copying properties from and to JMS messages
    * [SM-1623] - New binding component: SMPP
** New Feature
    * [SM-971] - SU archetype for servicemix-drools
    * [SM-1096] - File-based message auditor
    * [SM-1226] - Validation component should optionally handle errors by propagating a "correct JBI message" with "fault content"
    * [SM-1258] - New JBI component: Mail-BC
    * [SM-1277] - New archetype: Top-level pom.xml with SA project
    * [SM-1380] - maven archetype to support wsdl-first development with servicemix-cxf-se
    * [SM-1385] - Add a flag to disable transaction processing and behave like smx4
    * [SM-1387] - Make servicemix components OSGi friendly (without requiring the JBI packaging)
** Task
    * [SM-992] - Fix XSD schema locations for use with plain spring
    * [SM-1146] - Change servicemix repo url due to the svn relation out of the incubator area
    * [SM-1330] - Remove the deprecated servicemix-bpe component
    * [SM-1439] - Move the marshaler related classes from servicemix-core to servicemix-utils
    * [SM-1442] - Allow ServiceMix 3 to build using the ibm jdk.
    * [SM-1511] - update cxf version to 2.1.3-SNAPSHOT
    * [SM-1537] - update jetty version to 6.1.12rc1 for smx3
** Test
    * [SM-1532] - ServiceMixClientTest failed
    * [SM-1620] - LwContainerComponentTest failed with clean local repo
    * [SM-1625] - several samples test failed with clean local repo

ServiceMix 3.2.3
** Bug
    * [SM-1404] - can't init servicemix-wsn2005 in the ServiceMix 3.3-SNAPSHOT
    * [SM-1489] - camelendpoint should transform StreamSource to DomSource which support to be consumed multiple times
    * [SM-1500] - Build failure: servicemix-soap doesn't compile after upgrade to wss4j 1.5.4
    * [SM-1504] - Old version of wsdl4j.jar
    * [SM-1510] - Servicemix kit size is increased from 78Mb to 132Mb in current snapshot.
    * [SM-1525] - significant typo in servicemix classloader documentation
    * [SM-1550] - Exchange Listeners may not be receiving all events
    * [SM-1622] - servicemix-eip content enricher should copy original message properties in the way the pipeline does
    * [SM-1632] - Backport a change to Smx 3.2 branch to allow artifacts that use the servicemix-bean component to deploy on Smx4
    * [SM-1657] - Auto-enlistment should only occur when transactions status is ACTIVE
    * [SM-1658] - can't shundown container from jmx console
** Improvement
    * [SM-1364] - allow SimpleFlatFileMarshaler to use XmlEscapingCoverter
    * [SM-1501] - ServiceMix 3.2 should change the Jetty HttpClient from blocking mode to Non blocking (similar to 3.3 trunk version)
    * [SM-1542] - Modify servicemix-web sample pom file to include jetty <stopKey> and <stopPort> configuration for gracefully stopping jetty plugin.
    * [SM-1570] - CxfBcJmsTest fails frequently on slower machine
    * [SM-1574] - Allow forced shutdown of the container by cancelling pending sendSync exchanges
    * [SM-1586] - Copying properties from and to JMS messages
    * [SM-1596] - The version of Spring included in ServiceMix 3.2.x contains a bug prohibiting the use of the <tx:annotation-driven> tag in XBean config files
    * [SM-1610] - Upgrade ServiceMix 3.2.x branch to Spring 2.0.8
    * [SM-1640] - Backporting SM-1502 servicemix-drools should allow for asynchronous message handling.
** Task
    * [SM-1442] - Allow ServiceMix 3 to build using the ibm jdk.
    * [SM-1498] - update cxf version to 2.0.9-SNAPSHOT for smx3.2 branch to get lastest changes in cxf
    * [SM-1638] - use cxf 2.0.9 for coming smx 3.2.3 release
** Test
    * [SM-1558] - BaseAbstractAggregatorTest failed
    * [SM-1888] - fix camel-sa-itest failure

ServiceMix 3.1
** Bug
    * [SM-410] - Component Uninstallation : ClassLoader not removed from JVM
    * [SM-482] - Missing jars in the BPE component
    * [SM-494] - Problems with JMSFlow and sendSync in start() callbacks.
    * [SM-536] - The defaultMep is a mandatory attribute on consumer endpoints and should be checked
    * [SM-559] - WSDL-First example in JBoss
    * [SM-570] - HTTP connector can blow up while trying to report a problem
    * [SM-571] - Memory leak in DeliveryChannelImpl
    * [SM-572] - servicemix-wsn2005 always use the anonymous publisher
    * [SM-576] - XBeanProcessor does not skip comments
    * [SM-577] - JSR 181 fault message does not respect WSDL message fault definition
    * [SM-583] - Jetty context Path verification
    * [SM-584] - Servicemix archive for Jboss
    * [SM-585] - Deadlock on BoundedLinkedQueue
    * [SM-589] - The SourceTransformer should not log a warning when calling toResult with a null Source
    * [SM-592] - notifier.run() missing from DefaultState
    * [SM-593] - Jetty jars missing when running servicemix-web example
    * [SM-597] - Drools xpath expression does not use the namespaces defined
    * [SM-598] - MTOM attachments are not output by the jsr181 component
    * [SM-599] - bridge sample client.html providing no status info
    * [SM-600] - Compilation error in Geronimo ServiceMixGBean
    * [SM-603] - NullPointerException at org.apache.servicemix.jms.standard.StandardConsumerProcessor.doStart(StandardConsumerProcessor.java:51)
    * [SM-604] - Allow servicemix-http managed mode to dynamically determine the server, port, and context path it is running on when generating jsr181 WSDLs
    * [SM-608] - Maven based examples should include the needed repositories
    * [SM-610] - The ServiceAssembly mbean should return the names of the ServiceUnits
    * [SM-621] - Issues with ServiceMix startup shell script on Solaris
    * [SM-622] - JCAFlow with Howl Log throws STATUS_NO_TRANSACTION exception
    * [SM-668] - JCAFlow should reject synchronous exchanges
    * [SM-669] - Statistic file should be named stats.csv instead of stats.cvs
    * [SM-674] - jbi:installComponent (and others) fails authentication against default SM container
    * [SM-676] - In the instance2 of the ws-notification example, the org.apache.servicemix.tck.ReceiverComponent should be removed
    * [SM-677] - FTP connection not recovered after ftp server failure/recovery
    * [SM-678] - Jsr181Component not using SU classloader to load service interface
    * [SM-691] - Client.html pages do not work in IE
    * [SM-692] - http endpoint activation ordering
    * [SM-697] - Using XSLT servicemix component causes a "java.io.IOException: Too many open files"
    * [SM-700] - ClientFactory should log problems at warning level as they are not critical
    * [SM-707] - Subscription Manager and Flow MBeans do not get unregistered.
    * [SM-722] - ExtendedXMLStreamReader strips whitespaces, which breaks servicemix-http when a SOAP invocation contains whitespace nodes
    * [SM-723] - ServiceMixClientFacade should not call "done" method
    * [SM-727] - Schema Import problem in a WSDL which doesn't let the service to be doployed on Servicemix
    * [SM-732] - Fault-messages cause JbiChannel to throw NullPointerException
    * [SM-736] - JcaConsumerProcessor.start() fails after subsequent stop()
    * [SM-738] - Invalid jbi.xml when using maven. no description element
    * [SM-739] - wsdl for pojos exported by jsr181 endpoint is missing complextypes from other namespaces than the service itself
    * [SM-742] - JdbcAuditor fails on JBoss
    * [SM-743] - Deadlock in JBoss Deployer during shutdown
    * [SM-746] - JettyContextManager does not set the truststore parameters for unmanaged ssl endpoints
    * [SM-748] - Restart of ServiceUnits using PollingEndpoints fails
    * [SM-754] - Issues with jsr181 proxies using jaxws + doc/lit wrapped
    * [SM-757] - Pipeline throws NPE when configured in synchronous mode and an exchange in ERROR status is received
    * [SM-758] - JBoss Deployer 3.0 Snapshot classloading issues
    * [SM-759] - Error "Attempted read on closed stream" thrown from jsr181 proxies when dealing with streams
    * [SM-763] - XPathPredicate should not copy the in message before processing it
    * [SM-764] - Jsr181 does not respect the transaction semantic (sync + tx)
    * [SM-765] - JCA provider should close the session after use
    * [SM-766] - Error whit chracters latin1 when send message in JbiChannel. For example "�"
    * [SM-771] - An IllegalStateException is generated when using an http provider endpoint when it is deployed using the Servicemix Web war (managed mode).
    * [SM-775] - Positive preliminary response from server when using FTPSender to send multiple files
    * [SM-778] - JCAFlow stopped working after updating to 3.1 snapshot
    * [SM-779] - ISO-8859-1 characters are duplicated
    * [SM-780] - Bug due to change in proxy support for http binding component
    * [SM-781] - Re: Bug in ScritpComponent when using "script" attribute
    * [SM-782] - Re-deploy with In-Only Mep
    * [SM-783] - build fails under java 6
    * [SM-785] - Error in method doGetIds in DefaultJDBCAdapter class
    * [SM-791] - Problem packaging multiple service unit dependant from the same component
    * [SM-793] - StandardProviderProcessor does not set exchange status to done for InOnly/RobustInOnly exchanges
    * [SM-794] - jsr181 proxy does not throw faults correctly when used in jaxws mode
    * [SM-798] - Cannot start Bridge-SA in Geronimo 1.1 + Servicemix 3.0.1 plugin
    * [SM-801] - can not deploy bridge-sa in apache-servicemix-3.1-incubating-SNAPSHOT + Geronimo 1.2 Beta
    * [SM-802] - Refactor the Auditor MBean interface to avoid method overloading (which cause problems with JMX)
    * [SM-804] - Documentation for XPath Router is missing examples
    * [SM-805] - Incompatible BPELWSDLLocator between wsdl4j-1.5.2 and wsdl4j-1.6.1
    * [SM-808] - Remove Xalan dependency in SourceTransformer (was: Servicemix jboss deployer)
    * [SM-813] - [patch] Unique Column Names for JdbcComponent
    * [SM-814] - Remove the CONTENT_DOCUMENT_PROPERTY property in SourceTransformer to avoid using an old message when properties are forwarded between components
    * [SM-816] - useless include log framwork into jboss deployer
    * [SM-819] - Saxon NullPointerException at INFO level
    * [SM-824] - Webconsole does not work in Internet Explorer 7

** Improvement
    * [SM-521] - Tuning parameters configuration
    * [SM-565] - Enhance the JSR181 Proxy so that it can proxy non WSDL publishing components
    * [SM-569] - Refactor servicemix-common for ease of use
    * [SM-578] - HttpComponent can not be deployed as managed!
    * [SM-581] - Use WSDL of servicemix-http endpoint if none is supplied by the target ServiceEndpoint
    * [SM-586] - Upgrade loan-broker example to lingo 1.1 and use different queues to avoid recieving messages from previous client runs
    * [SM-591] - Extend the servicemix-commons to provide better classloading semantics
    * [SM-595] - Replace BoundedLinkedQueue by a standard queue
    * [SM-596] - add throws DeploymentException to getServices() in AbstractXBeanDeployer
    * [SM-609] - PropertyExpression should have a default constructor + getters / setters
    * [SM-612] - servicemix-service-engine could set the scope of servicemix-core to provided
    * [SM-613] - Remove old XBean related stuff (for ServiceMix v1 compatibility and jbi descriptors parsing)
    * [SM-614] - Parse jbi descriptors using DOM instead of Spring to remove spring dependency for embedded deployments and add validation with xsd
    * [SM-615] - Update the jbi maven based samples to be able to deploy the SA from the root dir
    * [SM-617] - make a new base class, DefaultComponent which combines the Component and Lifecycle functionality and can deal with the SpringComponent behaviour, dealing with statically configured endpoint POJOs
    * [SM-670] - Including JMSFlow in default servicemix.conf
    * [SM-675] - MimeMailMarshaler supports multiple recipients but does not support multiple to, cc and bcc adresses
    * [SM-690] - add ability to setup a proxy for provider endpoints
    * [SM-701] - Standardized the return of exceptions from the AdminCommandsService, also extended the ANT tasks to provide a deferExceptions settings which if set to true allows you to use the same semantics as the deploy/install directories.
    * [SM-702] - Components instantiated multiple times
    * [SM-704] - FTPPoller Improvements
    * [SM-706] - FilePoller needs to add check for delete file before removing the file from workingset
    * [SM-708] - ServiceUnitAnalyzer does not create parent spring context
    * [SM-709] - Upgrade to xbean 2.7 and Spring 2.0
    * [SM-710] - Upgrade to jetty 6.0.1
    * [SM-711] - Upgrade to woodstox 3.0.2
    * [SM-712] - Upgrade to xfire 1.2.2
    * [SM-713] - make some time values configurable
    * [SM-714] - component.properties in conf directory
    * [SM-717] - Upgrade to geronimo 1.2, jencks 2.0, activemq 4.1, lingo 1.1
    * [SM-720] - jbi:projectDeploy recurse all subdirectories for multiProject structure
    * [SM-726] - Upgrade to backport-util-concurrent 2.2
    * [SM-729] - Inverse classloader definition in xbean SU
    * [SM-751] - Flow tracing with correlation id
    * [SM-752] - [patch] Content-Enricher Implementation
    * [SM-755] - The EIP pipeline should have another exchange target for faults
    * [SM-756] - The jms/jca consumer endpoint should be able to rollback transactions when an exchange with an ERROR status comes back
    * [SM-769] - Authorization entries should be defined per operation
    * [SM-770] - HttpBridgeServlet is not initialize when using jetty 6.1pre3
    * [SM-773] - Ability to change the retryCount on provider endpoints
    * [SM-776] - Improve support for errors while processing jbi exchange and errors while deleting file
    * [SM-786] - EIP endpoints should extend the new ProviderEnpoint from servicemix-common
    * [SM-789] - Change groupId of woodstox to org.codehaus.woodstox
    * [SM-790] - Support for WSDL2 namespace in MEPs
    * [SM-815] - Externalize values  from main configuration file into a single property file
    * [SM-818] - polymorphic javabean support 
    * [SM-825] - Duplicated dependencies in the top pom

** New Feature
    * [SM-257] - WSDL 2 support with apache woden
    * [SM-587] - Allow the connections element of the JBI.xml for a Service Assembly to be provided
    * [SM-588] - Allow services element for a service unit to be provided
    * [SM-594] - Introduce an Executor and ExecutorFactory to configure all thread pools inside ServiceMix
    * [SM-601] - Xslt / XQuery SE
    * [SM-605] - Ability to configure jbi:projectDeploy goal to exclude updating dependencies
    * [SM-618] - create a file based servicemix-file service engine with nice support for URIs
    * [SM-619] - Allow the Maven JBI plugin to inject a default bootstrap if one isnt' specified
    * [SM-673] - Simplify classloader definition for xbean based SU
    * [SM-695] - Dynamic HTTP provider endpoint
    * [SM-696] - Add an operation to the EndpointMBean to allow testing the endpoint through jmx
    * [SM-705] - Static Parameter map injected into XsltComponent
    * [SM-734] - Drools 3.0 Service Engine
    * [SM-747] - JBI compliant SE for Quartz
    * [SM-753] - Provide a way to retrieve the current MessageExchange from a pure POJO in jsr181
    * [SM-767] - Statistics should be available at the endpoint level
    * [SM-777] - FTPSender could have a possibility to be configured with remote directory option
    * [SM-803] - Deployment events for a more pluggable hot deployer
    * [SM-809] - Add a way to copy properties using the EIP wire tap when using splitter / aggregator with a non well-behaving component
    * [SM-817] - log4j service for changing log levels at  runtime

** Task
    * [SM-527] - Source restructuration
    * [SM-671] - Use RI implementations for activation and javamail instead of geronimo ones
    * [SM-740] - Move org.apache.servicemix.jbi.audit package in its own module
    * [SM-741] - Upgrade commons-logging to 1.1 and log4j to 1.2.13 to support the log4j TRACE level
    * [SM-760] - Use spring exploded beans instead of spring.jar to ease classloader definitions




