There are a couple of key concepts in the JBI specification. There are two kinds of JBI components, the service engine (SE) and binding component (BC), which provide integration logic. BCs provide communication functionality to send messages to and from the JBI container, like for example a JMS BC, a File BC and a HTTP BC. SEs provide integration functionality that can be used to build your integration solutions, such as routing, transformation and routing logic. The BCs and SEs communicate with each other via a normalized message router (NMR). With the presence of a NMR, the BCs and SEs are decoupled and communication is done with so-called normalized messages. The communication layer between the BCs en SEs and the NMR is implemented with a delivery channel (DC). The DC is a bidirectional communication pipe that provides an API contract for BCs and SEs to be able to sent and receive messages from the NMR.
ServiceMix uses a JBI standard which provides a lot of components like JMS, BPEL, Web service, and Camel. The inclusion of Camel is a strong point for ServiceMix along with the Spring Framework, which is also supported. FUSE ESB is another great distribution of Apache ServiceMix.