/*
 * 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
                      ======================

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
** Bug
    * [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-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-2051] - Not possible to retrieve list of installed shared libraries with list-shared-libraries Ant task
    * [SM-2056] - Upgrade to JAXB 2.2 and include JAXB API in the container lib
    * [SM-2057] - Add JAX-WS in the distribution kit
** 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-1828] - WS-Notification component servicemix-wsn2005 - Content Message filter does not support namespaces in the payload
    * [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
** New Feature
    * [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-2055] - Release ServiceMix 3.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




