ESB Architecture
How does an ESB differ from an Application Server? Generally an application server will consist of Servlets, EJBS, Webservices, JCA Components (For connecting to databases), and can also have a persistence layer like JPA/Hibernate. Application servers can also be extended to have rules engines like Drools etc. A typical application server architecture would look like:
However, in a typical enterprise, a system may have to deal with multiple other systems, running on multiple clusters and external distributed environments. For example some of these external systems may include a Billing System, an Inventory System, an Accounting System and a CRM, and this is where an ESB Architecture fits in.
An ESB System, provides a set of tools for synchronizing/orchestrating the communication between these external systems. Note: Some of these external systems may not be in Java, and may involve other technologies like .NET, Php/Lamp, or other legacy technologies. Also communicating between these systems may not simply be RMI or JMS Messages in a Java Environment. It may also involve communicating using SOAP/XML messages over a Web service or Restful interface, or simply reading file in different formats over an FTP link.
JBoss ESB