The UltraESB is an Enterprise Service Bus [ESB] that facilitates the integration of messages between different systems; both within an organization and beyond - with its partners and users. These "messages" maybe HTTP/S messages (such as SOAP, REST, JSON, XML, Hessian, AS2, HTML, Binary, Text etc) or messages over many other transports such as JMS, FTP/S, SFTP, File, Email, TCP, MLLP/S etc, containing different types of payloads such as SOAP, XML, Text, CSV, EDI, HL7, JSON, Map etc.
The UltraESB from AdroitLogic has deep support for the HTTP/S protocols,and the ability to load balance or fail over requests between multiple backend systems, using round-robin, weighted or random algorithms. Although primarily targeted for OA as an ESB, it can even be used as a web proxy replacing Apache+mod_jk.
The UltraESB also allows HTTP level failures, SOAP faults etc from a server to cause a fail-over to another instance, as well as validation of a successful response by a custom ResponseValidator - before accepting it as a valid response to be sent back to the client. This allows the UltraESB to detect for example that a HTTP 200 response that states "Service is not active" to be identified as a failure and fail-over the request to another instance. Additionally, the UltraESB could easily read or write cookies, HTTP headers etc much easily.
This article describes a scenario where the UltraESB is used to front two Tomcat servers with sticky load balancing with fail-over, and compares it to a similar setup with Apache2+mod_jk
Using the UltraESB to proxy and load balance requests to Tomcat