Version: 2.6.1
ESB is relatively a new concept where there is no formal definition of what it is. The following definition from Wikipedia seems to be very close, to what UltraESB tries to deliver, yet there is more than that.
Enterprise Service Bus [ESB] refers to a software architecture model used for designing and implementing the interaction and communication between mutually interacting software applications in Service Oriented Architecture. As a software architecture model for distributed computing it is a speciality variant of the more general client-server software architecture model and promotes strictly asynchronous message oriented design for communication and interaction between applications. It’s primary use is in Enterprise Application Integration of heterogeneous and complex landscapes.
Extracted from Wikipedia, the free encyclopedia [http://en.wikipedia.org/wiki/Enterprise_service_bus]
UltraESB is not only focused on this above aspect of an ESB rather it is an AS2 switch, JSON/Data Services and Mock Service container, Security gateway and many more in addition to being a typical ESB in SOA, designed to be better in performance, features and ease of use.
The UltraESB is a lightweight and lean Enterprise Service Bus that facilitates the integration of different systems; both within an organization and beyond. Integration is facilitated via "messages" which maybe received or transmitted over one of many transports, such as;
HTTP/S - Hypertext Transfer Protocol / HTTP-SSL
JMS - Java Messaging Service
AMQP - Advanced Message Queuing Protocol
Email - Electronic Mail
TCP - Transmission Control Protocol
MLLP/S - Minimal Lower Layer Protocol (used by HL7) / MLLP-Secure
Files
FTP/S - File Transfer Protocol / FTP-SSL
SFTP - SSH (Secure) File Transfer Protocol etc.
Messages may carry different types of payloads such as;
SOAP - Simple Object Access Protocol
REST - Representational State Transfer
XML - Extensible Mark-up Language
HTML - Hypertext Mark-up Language
JSON - JavaScript Object Notation
Text
Binary
Protocol Buffers - Google protocol buffer binary format
CSV - Comma-Separated Values
EDI - Electronic Data Interchange
HL7 - Health Level 7
Hessian
AS2 - Applicability Statement 2
Maps etc.,
and the UltraESB can accept messages over one transport in one format, and forward it to another system over another transport and another format. Messages passing through the UltraESB can be "mediated" via fragments of Java code or JSR 223 Scripting languages such as Ruby, Groovy, JavaScript and many many others as listed at java.net/projects/scripting/sources/svn/content/trunk/www/index.html?raw=true. Thus the "mediation" logic could easily be written in any Java IDE the user is familiar with, execute and debug the configuration all from within the IDE utilizing the IDE features such as step through debugging.
By deploying the UltraESB between your partners, clients and users, you can use it to;
validate messages received
verify security
perform decryption
filter requests for injection attacks
throttle or rate/quota limiting
response caching
etc, and then route it to one or more of your internal services possibly over different transports. The UltraESB can alternatively transform the message payload using;
XSLT
XQuery
Milyn
Java
Groovy or
any other type of transformation or
use your favourite external library or
custom code you’ve developed
to perform a transformation. It can also perform;
load balancing
fail-over
between multiple back-end systems, using round robin, weighted, random and other types of algorithms. For example, you could receive SOAP messages over HTTPS, and direct them to a "Text"ual JMS service back-end; or poll an FTP location for a file pattern, process the records when a file appears, and post them to your HL7 back-end systems etc.
By routing all of your external traffic through the UltraESB, you could apply security consistently (e.g. WSSecurity) and efficiently without handling it in your internal code (e.g. PHP etc), mask out sensitive information such as credit card numbers consistently, use multiple identity certificates to communicate with different business partners, transform message formats or switch transports etc.
The UltraESB is an light weight (~ 65MB) Java application and can be installed over any Java 7 or Java 8 supported OS/HW or VM/Cloud configuration.
The UltraESB is configured with a single XML file, and a set of deployment units
The configuration is a standard Spring configuration, and thus offers native Spring support during "mediation" of messages
The "mediation" logic maybe written as a Java code fragment (no compiling, Jar/bundling or deploying - just write and run) or any JSR 223 scripting language such as Groovy, Ruby, JavaScript, etc. alternatively you can write mediation in compiled Java classes too.
Supports JTA transactions including suspend/resume, message split/aggregation
Supports clustered deployment with centralized cluster controls
Contains a in-built metrics engine to both collect system metrics as well as user defined custom metrics streams in an efficient manner
Includes a command line interface (UTerm) and extensive JMX support for management and monitoring with built in Zabbix integration
In a nutshell, the UltraESB is a simple, feature rich, easy to configure, high performance Enterprise Service Bus.