Working on integration projects used to mean working with EAI products, each of which implemented its own stack of tools with proprietary technology. To switch from one EAI product to another meant learning the proprietary technology and toolset from that new product. Then, the market changed from EAI to SOA and ESB products, with more focus on open standards that emerged in the integration market. Examples of these open standards are Java Message Service (JMS), SOAP, XML, and WS-*. With open standards available, more and more open source projects began to implement these specifications.
Because we enjoyed working with open source frameworks in JEE application development, we watched the progress of integration frameworks with a lot of interest. Mule was one of the first projects that provided a large set of integration functionality; after a while, it was called an ESB. When we had the chance to design an SOA architecture of a new solution for our current employer in 2005, we chose Mule as the foundation product. It was delightful to work with an open source ESB to solve our integration needs, because it offered a rich set of integration functionality out of the box. Even when we had to add nonexistent functionality, the ease of development was striking.
At the same time, the JBI specification (JSR 208) was released. It was intended to standardize the ESB infrastructure and had the potential to implement an ESB with products from several vendors, with each product suited for its specific task, such as routing, transformation, or service orchestration. Although the JBI specification didnt really take off, some interesting products were created. Apache ServiceMix is an excellent example of a JBI implementation; because it makes working with the JBI specification simple, we think ServiceMix is a great alternative to Mule. Mule focuses on ease of development with support for all kinds of payloads, and it uses an architecture and design model, which isnt based on a specification. ServiceMix implements the JBI specification and therefore focuses on XML payload and the implementation of binding components and service engines.
Mule and ServiceMix have a lot of differences, but they also have common ground thats focused on integration functionality. We noticed the lack of books in the open source integration area, and it occurred to us that we could write a book that covered both Mule and ServiceMix; it would provide a good overview of the current state of open source integration products. Because were developers and are working on client projects all the time, we decided to provide a lot of examples in the book.
Writing this book has been an intense, but interesting and enjoyable experience. It took a lot of time to implement every example, but the result is material thats freely available to everyone and a good starting point for a Mule or ServiceMix project. While we were writing this book, we had a hard time keeping up with the fast development pace of the Mule and ServiceMix projects and emerging frameworks like Apache Camel and Spring Integration. But we kept up: This book uses Mule 2.0.2 and ServiceMix 3.2.1. Please note that there has been a new release of ServiceMix with version 3.2.2. This is just a maintenance release which does not change the contents of this book, nor the example implementations.
We provide a fully implemented development environment with many additional frameworks and libraries, and functionality to build and test integration solutions. This book provides a complete approach to working with Mule and ServiceMix, and we hope youll enjoy reading it and working with the examples.