Quoting, Tijs Rademakers, the author of Open Source ESBs in Action:
I always use the following matrix to
clarify the distinction between the
popular open source integration
frameworks:
- Mule --> Custom architecture, XML based configuration, easy for Java
developers
- ServiceMix 3 --> JBI based, focus on XML messages
- ServiceMix 4 --> OSGi based, integrated with Camel configuration,
also provides support for JBI
- JBoss ESB --> Custom architecture, runs on JBoss
application server, fits great with
JBoss products
- Synapse --> Focus on WS-*, Rest, build on Axis 2, great if you need
things like WS-Security etc
- OpenESB --> JBI and OSGi based, runs on Glassfish, nice tool support
with Netbeans
Camel --> XML and Java DSL configuration, no container, support
for EIPs and lots of transports
Spring Integration --> XML and Java annotation configuration, no
container, support for EIPs
- PetTALS --> JBI based, nice admin console, French based
Tuscany --> SCA based, provides support for WS-*, focus on service
development not integration
Personnally, I have good experience with Mule, decent with OpenESB (good toolset but documentation is less good), less good with Service Mix (hard to find your way through the documentation, some bugs). No experience with the others.
Given your requirements, candidates are Mule, ServiceMix, OpenEJB, JBoss EJB and PeTALS (Tuscani, Camel and Spring Integration don't meet them, not sure for Synapse). My preference would go for Mule, especially now that the future of OpenESB in not clear, because of snoracle, and I'm pretty sure it covers all your requirements. But if you want a solution that runs on an application server, consider OpenESB or JBoss EJB.
Here are some other must read resources on this topic, you'll get some more feedback there (the two first links are pretty recent, the third one is more old and maybe outdated):