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 Wikipidia, 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.
Integrate different systems both within an organization and beyond
The UltraESB is a Free and Open Source Enterprise Service Bus that facilitates the integration of different systems; both within an organization and beyond. Integration is facilitated via "messages" which maybe over one of many transports, such as;
- HTTP/S - Hypertext Transfer Protocol / HTTP-SSL
- JMS - Java Messaging Service
- Email - Electronic Mail
- TCP - Transmission Control Protocol
- MLLP/S - Minimal Lower Layer Protocol (used by HL7) / MLLP-Secure
- 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
- CSV - Comma-Separated Values
- EDI - Electronic Data Interchange
- HL7 - Health Level 7
- 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, Java-script and many many others as listed at https://scripting.dev.java.net/ Thus the "mediation" logic could be easily written from within a Java IDE the user is familiar with, and test, execute and debug the configuration all from within the IDE utilizing the IDE features such as step through debugging.
Acting as a gateway between your organization and your partners
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
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;
- 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
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.
Lean and simple to configure
The UltraESB is an extremely light weight (~ 35MB) Java application and can be installed over any Java 1.6 supported OS/HW or VM/Cloud configuration
- The UltraESB is configured with a single XML file or multiple files if desired, for a large configuration
- 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 JSR223 scripting language such as Groovy, Ruby, Java-script etc
- Supports JTA transactions including suspend/resume, message split/aggregation
- Supports clustered deployment with centralized cluster controls
- Includes a web based console (Uconsole), 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, open source Enterprise Service Bus.