Project Freegate

Project Freegate
Market Survey of Open Source EAI Software
September, 29th, 2006
FOSS Innovation Platform
Free and Open Source Software
Innovation Platform
Centre de Recherche Public Henri Tudor
29, Avenue John F. Kennedy
L-1855 Luxembourg–Kirchberg
libre.tudor.lu
Phone: (+352) 42 59 91-250
Fax:
(+352) 42 59 91-251
www.tudor.lu
Fachhochschule Trier
UNIVERSITY OF APPLIED SCIENCES
Schneidershof
D-54293 Trier
Phone: (+49) 0651 / 8103 - 0
Fax: (+49) 0651 / 8103 – 333
www.fh-trier.de
Project Freegate: Market Survey of Open Source EAI Software
CRP Henri Tudor
Authors. Oechsle, Donak
Date: September, 29th, 2006
Page 2/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
TABLE OF CONTENT
1
INTRODUCTION ........................................................................................................... 5
1.1
1.2
1.3
2
INFORMATION INTEGRATION ........................................................................................ 5
COMMERCIAL EAI SOLUTIONS..................................................................................... 8
THE FREE AND OPEN SOURCE APPROACH ................................................................... 10
PREPARATION ............................................................................................................ 11
2.1 APPROACH ................................................................................................................. 11
2.2 EVALUATION CORE CRITERIA ..................................................................................... 12
2.2.1 Architecture........................................................................................................ 12
2.2.2 Licence ............................................................................................................... 12
2.2.3 Documentation ................................................................................................... 12
2.2.4 Project state ....................................................................................................... 12
2.3 EVALUATION DETAIL CRITERIA .................................................................................. 13
2.3.1 General............................................................................................................... 13
2.3.2 Architecture........................................................................................................ 14
2.3.3 Features.............................................................................................................. 16
2.3.4 Security............................................................................................................... 20
2.3.5 Support ............................................................................................................... 21
2.3.6 Usability ............................................................................................................. 23
2.3.7 Project state ....................................................................................................... 25
2.4 CHECK LIST ................................................................................................................ 26
3
EVALUATION .............................................................................................................. 29
3.1 SYSTEM IDENTIFICATION ........................................................................................... 29
3.2 EVALUATION PHASE I................................................................................................. 30
3.2.1 Business Integration Engine (BIE)..................................................................... 30
3.2.2 Clover.ETL ......................................................................................................... 30
3.2.3 Conductor DocSOAP XDK ................................................................................ 31
3.2.4 connectorWorks.................................................................................................. 31
3.2.5 DataServer ......................................................................................................... 32
3.2.6 elemenope........................................................................................................... 33
3.2.7 it.gim................................................................................................................... 34
3.2.8 jEngine ............................................................................................................... 34
3.2.9 mec-eagle ........................................................................................................... 35
3.2.10
Message Forge................................................................................................ 35
3.2.11
Mirth ............................................................................................................... 36
3.2.12
NaradaBrokering ............................................................................................ 37
3.2.13
Net Kernel ....................................................................................................... 37
3.2.14
Octopus ........................................................................................................... 38
3.2.15
OpenEAI.......................................................................................................... 39
3.2.16
OpenQueue ..................................................................................................... 39
3.2.17
OpenSymphony ............................................................................................... 40
3.2.18
Orbeon PresentationServer ............................................................................ 41
3.2.19
OSMQ ............................................................................................................. 42
3.2.20
ServiceMix ...................................................................................................... 42
3.2.21
S-integrator ..................................................................................................... 43
3.2.22
SolAce ............................................................................................................. 44
3.2.23
Tambora.......................................................................................................... 44
3.2.24
Xineo XIL ........................................................................................................ 44
CRP Henri Tudor
Page 3/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
3.2.25
XMLBlaster ..................................................................................................... 45
3.3 EVALUATION PHASE II ............................................................................................... 46
3.3.1 Babeldoc............................................................................................................. 47
3.3.2 JyRetic ................................................................................................................ 53
3.3.3 Mule.................................................................................................................... 59
3.3.4 openadaptor ....................................................................................................... 67
3.3.5 Proteus ............................................................................................................... 75
3.3.6 xBus .................................................................................................................... 79
4
EVALUATION MATRIX............................................................................................. 86
5
CONCLUSION .............................................................................................................. 92
ANNEXE A: GLOSSARY................................................................................................... 93
ANNEXE B: REFERENCES .............................................................................................. 97
ANNEXE C: TABLE OF FIGURES ................................................................................ 100
ANNEX D: LICENSES...................................................................................................... 101
5.1
5.2
5.3
5.4
5.5
5.6
APACHE LICENSE, VERSION 1.1............................................................................... 101
GPL ......................................................................................................................... 102
LGPL....................................................................................................................... 105
OPENADAPTER LICENSE ........................................................................................... 110
MULE LICENSE ........................................................................................................ 111
XBUS LICENSE ......................................................................................................... 112
CRP Henri Tudor
Page 4/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
1 Introduction
1.1 Information integration
Nowadays companies and organizations implicate an IT-infrastructure that involves a
multiplicity of different subsystems. These subsystems serve common tasks like accounting,
enterprise resourse planning or human resource management. In addition to these common
systems there is a number of subsystems that is specialized to the needs of the company’s
core business. The systems itself may be independent, but in order to avoid redundancy, the
data stored within these systems have to be exchanged.
Some approaches to exchange the information between the subsystems are
•
Multiple input of information
•
Point to point connection between subsystems
•
Use of an enterprise application integration system
Multiple input of information
The information will be manually entered into the different subsystems even if it is already
available in another subsystem. If data has to be transferred from one system to another, it is
printed out from the delivering system and manually be entered in the receiving system.
Figure 1 Multiple input of information with media conversion
The approach of the manual entering of redundant information is the most ancient and
inefficient way of information “exchange”. It leads to redundant data management and thus is
vulnerable to data inconsistencies.
Advantages
•
Works directly with every subsystem
•
No programming necessary
Drawbacks
•
Very error prone (typing error during input, loss of the printout during delivery)
•
Takes quite a long time for data input
•
Quite expensive due to the need of human resources
CRP Henri Tudor
Page 5/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Point to point connection
For all applications that need to exchange information, a separate interface for every flow of
information will be created. This is individually done for the different interfaces of the
involved subsystems and the different protocols and message formats.
Figure 2 Point to point connection
This approach results into many point-to-point connections that grow up across an
organisation. Dependencies are added on an ad-hoc basis, resulting in a tangled
unmaintainable mess, commonly referred to as spaghetti, a comparison to the programming
equivalent known as spaghetti code.
The number of n connections needed to have a fully-meshed point-point connections is given
by n∗ (n− 1) . Thus for just 10 applications to be fully integrated point-to-point, 10 ∗ (10 − 1) or 45
2
2
point-to-point connections are needed.
That as well means if just one application interface is changed (e.g. due to an upgrade or the
use of another product) n-1 point-to-point connections have to be changed. In the example
indicated above this would result into the recreation of 9 point-to-point connections if one
application interface changes.
Advantages
•
Can be relatively easy to implement for small IT-infrastructures
•
Cheap in the acquisition phase
•
Automatic and quick transfer of information
•
No errors due to human interaction
Drawbacks
•
No means to administrate the resulting information exchange network
•
Hard to track down errors
•
No monitoring
•
Becomes quickly very complex
•
No scalability
CRP Henri Tudor
Page 6/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
•
Immense implementation effort for larger IT-infrastructures
•
High adjustment needs if interface of a subsytem changes (upgrade, different vendor)
Enterprise application integration system (EAI)
Enterprise application integration is the use of software and architectural principles to
integrate a set of enterprise computer applications. This represents the chronologically
youngest approach of application integration.
EAI is related to middleware technologies such as message-oriented middleware (MOM) and
data representation technologies such as XML. Newer EAI technologies involve the use of
web services as part of service-oriented architecture (SOA) as a means of integration.
Figure 3 EAI system structure example
Current thinking is that the best approach to EAI is to use a message bus to connect numerous
separate systems together. Other approaches like connecting at the database level or at the
user-interface level have been explored. However, the message bus approach has generally
been adopted as the strategic winner. Individual applications can publish messages to the bus,
and also subscribe to receive certain messages from the bus. The bus itself consists of
distributed software components and a central repository that contains the business rules.
Figure 4 Topological comparison between Hub & Spoke (left) and Bus structure (right)
CRP Henri Tudor
Page 7/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Another widespread approach is the so called Hub & Spoke or message broker architecture. It
reflects the first generation of EAI systems and involves a central hub, all external appli
cations are connected to it like the spokes of a wheel that handles the transfer of all
information. That factor can lead to a performance bottleneck at high workload if the system
is not scalable and is normally based on proprietary solutions whereas the ESB architecture is
based on plugable components and open standards. Furthermore, the ESB structure with its
intellegent connectors normally provides an advanced framework for security, transaction,
tracking, monitoring and logging.
With EAI each application only requires one connection, which is from the attached
application to the EAI system. Attending to EAI involves looking at a system of systems.
Such message bus approaches can be extremely scalable, and also highly evolvable.
Advantages
•
Just one interface for every application
•
Easy to maintain
•
Monitoring and Administration of the whole infrastructure available
•
High scalability
•
Use of open standards
•
Additional features like transaction, tracking, logging and security framework
Drawbacks
•
Normally high initial costs
•
Trained personal needed
•
Single point of failure (for Hub & Spoke)
1.2 Commercial EAI solutions
Because of the above mentioned advantages over the other information exchange methods,
enterprise application integration systems are an important topic in the software industry.
This results in a number of vendors, who are providing commercial solutions like:
•
Ascential: Enterprise Integration Suite
•
IBM: WebSphere Business Integration Server
•
Inubit: Integration Server
•
Microsoft: BizTalk
•
SAP: NetWeaver
•
SeeBeyond: eGate Integrator
•
SoftProject: X4
•
TIBCO: Business Works
•
VITRIA: BusinessWare
•
webMethods: Integration Server
CRP Henri Tudor
Page 8/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Many of these systems are having a high-potential for solving the interconnection problems
within companies and organizations.
But with these systems as well implicate some drawbacks that shouldn’t be concealed:
•
Initial costs
The costs for the dedicated hardware and especially the licences are quite high and
thus often not affordable for SMEs. The most common model is that a licence fee has
to be paid for the core system and additional fees for every connecter that is used to
connect the EAI system to an application of the customer.
•
Support costs
The costs for the support contracts are as well usually quite high (e.g. 25% of the
licence costs). This is mainly linked to the proprietary nature of the solution: as the
source code is secret, there can be no concurrence on high level support due to the
induced monopoly.
•
Support quality
Especially for SMEs this issue can become a problem as the paid support is in the
grand majority of the systems just given from the vendor. Should any incident occur,
the vendor will usually set his priorities to the most important customers which means
the biggest ones. The smaller customers are normally served afterwards. Especially in
domains like Healthcare or the financial sector, it is quite important that the response
times and especially the “problem solving”-times are quite low. As the experience of
the CRP Henri Tudor and some Luxembourgish hospitals shows, this requirement can
not be fulfilled by this support model. Furthermore, because of the closed source, the
customer (or a 3rd party supporter) does not have the possibility to fix a system bug
himself or alter the system if needed.
•
Skilled staff
Because of the complexity of such systems and lack of direct access to information,
staff with special skills, that are normally not present in the IT-department of the
customer, is needed in order to integrate the IT-systems and maintain the integrated
IT-landscape of the company later on. These kinds of special skills are usually
dependent of specific expensive trainings only given by the vendor of the proprietary
solution. This results into costs for training that has to dedicate a majority of its
working resources to the EAI-system. Alternatively this task can be given over to 3rd
party consultants who might have to be paid as well and most surely have higher
response times than internal competences.
•
Product life cycle
A vendor has to continuously enhance his product in order to stay competitive on the
market. He is doing so by releasing new versions of the product in certain intervals.
As the vendor has limited capacity (or even, sometimes, interests) for supporting the
increasing numbers of different versions and also wants to push the sale of the new
product versions, he stops the support for older versions some time after the new one
has been released. In order to profit by the crucial support, the customer has to
migrate to the newer software version. That comes along with a diversity of costs for
licences customizations, user trainings and downtimes.
CRP Henri Tudor
Page 9/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
1.3 The free and Open Source approach
Because of the drawbacks of commercial products described in the last paragraph, this paper
gives an overview about free and Open Source alternatives for EAI solutions. The free and
Open Source approach holds the potential to avoid some of the disadvantages listed under
“Commercial EAI solutions” in paragraph 1.2. On one hand they are completely free of
charge which helps to drastically reduce the costs especially in the acquisition phase.
On the other hand the source code of these systems is public and explicitly allowed, and
therefore can be freely modified and extended by anyone. This circumstance avoids the
vendor dependence in terms of support and product life cycle, as the consumer does not
simply buy a licence of the product but gets a full set of rights linked to it, including having
access to the source code.
Aside from this high potential, one has to keep in mind the fact that even though a system is
an Open SourceOpen Source EAI-system, it doesn’t automatically imply a high quality
product. Thus, once the Open SourceOpen Source EAI-systems have been identified, they
will be evaluated against criteria catalogues in order to determine if Open SourceOpen Source
solutions could be as well from a technical point of view an alternative to commercial EAIsystem.
Clearly, Open Source licenses tend to favour the user of a solution whereas proprietary
software tend to favour the supplier: with an Open Source Software Product, the consumer
will have access to the source code and most importantly will have the right to modify this
code. Advantages are real and tangible in terms of finances (ability to distribute freely a well
tweaked solution, for example, among as many partners as needed without buying new
licences), knowledge and training (because of the ability to study the source code), security
and quality (as the user can modify himself the code or have it modified by anyone that can).
The outline of the paper is as follows: The next section describes the approach for this survey.
The third section lists all the systems that were not investigated in-depth, whereas section 4
describes the systems that have been analyzed more deeply. All the systems described in
section 4 are compared against each other in section 5. Based on this comparison we finally
draw some conclusions and present our results in section 6.
CRP Henri Tudor
Page 10/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
2 Preparation
2.1 Approach
The approach of this survey is based on five main steps:
1. System identification
Gathering of free and Open SourceOpen Source EAI-projects from the web
2. Core criteria evaluation
Check of the found systems against some “must have” criteria – first validation phase
3. In-depth evaluation
In-depth check of the EAI-systems that passed the first validation-phase against the
detailed check list – second validation phase
4. Validation matrix
Creation of a matrix like presentation grid, that faces the characteristics of the
different systems against each other
5. Conclusion
The recommendations resulting of the survey
The understanding of EAI can differ widely. This results in a multiplicity of systems that are
announced under the flag of EAI but don’t match to the definition of EAI systems this survey
is based on (please see section 2.2.1 on page 12 and section 2.3.2 on page 14 for further
details).
In order to pay respect to this circumstance a two-phase evaluation approach has been used in
this survey.
CRP Henri Tudor
Page 11/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
2.2 Evaluation core criteria
The first evaluation phase includes four main criteria to filter the EAI-candidates:
2.2.1 Architecture
This criteria examines the system architecture at a meta-level, i.e. the basic structure of the
system. Detailed information about the wanted system structure can be found in the following
paragraph 2.3 “Evaluation detail criteria” under 2.3.2 “Architecture” on page 14.
Here the features, that are interesting for the meta-level architecture rating:
•
Connectors
that provide the link to the interfaces of external systems (outbound and inbound).
•
Transformers
that are able to receive messages from and send messages to connectors. Furthermore
they have to have the ability to map messages from one format to another.
•
Component based architecture
that allows to easily exchange or add components to the system.
2.2.2 Licence
The system itself has to be free of charge. There have to be no hidden charges for the use of
the system, like for the transactions going through the system or for the number of concurrent
transactions.
Furthermore it must be legal to modify or extend the system code and to add own modules,
use the system for other projects and hand the modified or extended system on to 3rd parties.
2.2.3 Documentation
A reasonable documentation have to be available for free. This documentation should give an
overview about the system structure and instructions for installation and configuration.
It should explain how external systems can be connected and how messages can be modified
and mapped.
2.2.4 Project state
It is absolutely necessary that the project is already in a technically mature state. This is even
more important, if the project is not in development anymore. A “technically mature state”
has been reached if the architecture requested under 2.2.1 has been realized, there is an
appropriate number of connectors and transformers available and the system is usable for
application integration. The components have to be configurable and there have to be
interfaces, that allow to extend the framework.
CRP Henri Tudor
Page 12/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
2.3 Evaluation detail criteria
In order to be able to rate the remaining EAI-systems, a checklist containing the evaluation
detail criteria has to be created. This evaluation detail criteria define the fields of interest that
will be examined and rated and as well the weight that will be put onto them.
The projects, that passed the first evaluation run were checked against a detailed evaluation
matrix.
The following sections describe the different sections of the checklist:
2.3.1 General
System abstract
This section provides the general information about the tested system. This includes an
abstract of the system features and highlights mainly adopted from the introduction page of
the system webpage and the link to the system webpage.
License
The license itself can be found in the annex. The licence should allow the (free of charge) use
of the EAI-system within other projects and allow the enhancement and modification of the
system.
Requirements & OS support
The minimum system requirements should be as low as possible in order to have as many
resources left for the traffic handling itself. On the other hand the system should be able to
run under as many environments (Operating Systems) as possible to assure, that it can be fit
into the existing IT infrastructure of the user.
3rd party software
3rd party software that is either mandatory needed to run the system or can optionally be used
to extend the system use will be listed here.
General check:
Check
CRP Henri Tudor
Importance
license
High
OS support
High
System abstract
Medium
System requirements
Medium
3rd party software
low
Page 13/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
2.3.2 Architecture
The chosen architecture has to assure that the system can easily be extended in terms of
features as well as in terms of scalability and will thus be able to pay respect to growing
needs as the system environment expands.
Component based architecture
A system with a component based architecture allows the easy exchange or addition of
different modules (=components) without the need of touching the whole EAI system. This
allows a relatively easy and fast adjustment to changing requirements and thus enables a
future-proof system. Examples of EAI components are connectors, processing units, message
structure templates or queues that will be explained in the following paragraphs.
Defined module interface (API)
An application programming interface (API) including well defined component interfaces
provides a standardized way to access the internals of the EAI system. The use of an API
assures the possibility to quickly understand the functionalities needed to integrate a custom
made component in a framework and to access its resources. This facilitates the creation and
extension of modules. Furthermore it reduces the development and deployment time of
additional components and adjustments of existing ones.
Connectors
Connectors enable the communication with different kinds of external systems as they
“speak” the language of the external system (e.g. FTP or SMTP). Connectors should be able
to act as servers (inbound connector) that listens for messages coming from external systems
and as clients (outbound connector) that actively send messages to external systems.
Furthermore a (inbound) connector should provide polling abilities to actively scan an
external system for new messages in configurable intervals. This is especially necessary if the
external system is unable to actively send its messages to the EAI system. Than the polling
connector has to fetch the messages e.g. from a file system, a ftp account or from the export
tables of a database.
Message container
The information coming from and going to the external systems are treated as messages. A
message fetched from an external system usually has a certain structure. The elements of this
structure have to be accessible for reading, writing and modifying. In order to support these
tasks, so called message containers are useful. These containers represent the structure of the
message. After the message has been parsed into the container, it’s element contents and
states (like the query if a field is optional or not) are easily accessible by function calls.
Synchronous/asynchronous
The synchronous communication describes the direct delivery of messages from the sending
component to the receiving component. That means the sending component retries sending
until the message reached the receiving component. This direct communication is faster than
the use of queues and it is known to the sending component that the message reached its
target. Unfortunately this message transfer approach also implicates some drawbacks like the
blocking of the sending component in case of reduced transmission reliability and the lacking
possibility to promote a message to a pool of receivers where either all or the first available
receiver (load balancing) picks it up.
CRP Henri Tudor
Page 14/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
The contrary behaviour reflects the queue based behaviour an so called asynchronous
communication. That means that the receiving component hasn’t to be available at that point
of time at which the sending system or component likes to transfer a message This
mechanism can be compared to a postman (sending component) who puts a letter into the
post-box (queue) of the receiver (receiving component). The receiving part picks it up from
the post-box as soon as he is available. This asynchronous behaviour is especially helpful for
distributed systems, where it can’t be assured, that the receiving system or component is
available at the time of sending. Either approach has its justification and applications. Thus it
would be optimal if both modes are supported.
Processing unit
Processing units accept one or more message types on a time and change their content in a
certain way. This can start with simple format transformation of the message content (like the
transformation from one date format to another) over the mapping from one message structure
to another up to advanced functionalities like digital signing and encryption. The result of
these operations will be sent back for the processing by additional processing units or to
connectors to be sent to an external system.
Predefined processing units have a fixed functionality that is slightly configurable by
parameters. These processing units are normally shipped with the EAI system and observe
standard functionalities like compression or decompression of content, the transformation to
or from xml or encryption.
Besides the predefined processing units exist custom processing units. Their functionality
can completely defined by the user. He can usually determine the functionality graphically
(e.g. for the mapping of message formats). For more sophisticated tasks this can alternatively
be accomplished by the use of a programming or scripting language like C++, Java, Perl or
Python. An established standard language is reasonable as the coding skills for these
languages are wide-spread and libraries for many occasions are already available.
Routing
After a processing unit finished the message modification, the message has to be routed to
another element either following a predefined workflow or dynamically depending on the
content of the message. The support of the combinations of both approaches guarantees the
most flexible application of the EAI system. The element, the message is routed to, can be
either a connector if the resulting message is determined for an external system or to another
processing unit, if further message modifications are needed.
Scalability
The capability of parallel processing of messages together with distributed EAI-components
provides a maximum of scalability and assures that the system will be suitable even if the
capacity requirements are steadily growing.
CRP Henri Tudor
Page 15/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Architecture check:
Check
Importance
Component based architecture
High
Connector as client (outbound connector)
High
Connector as server (inbound connector)
High
Custom processing units (Transformation)
High
Dynamic message routing
High
Message container
High
Predefined message routing
High
Scalability
High
Synchronous communication
High
Asynchronous communication
Medium
Connector polls messages (inbound connector)
Medium
Defined module interface (API)
Medium
Predefined processing units (Transformation)
Medium
2.3.3 Features
Connectors
Connectors enable the EAI-system to dock to external systems and exchange messages. A
diversified number of connectors to different external systems guarantees the connectivity of
the EAI system and thus its usability. Connectors can be in principle divided into three
categories: file-based, message-based and database-based.
File-based
The file-based connectors are especially important for the access of legacy systems, which
often only provide a file import/export as interface. For this connectors a polling mechanism,
which scans the file-folder in definable intervals for new files is fundamental. As well the
handling of the processed files should be configurable (e.g. move, delete, rename). The filehandling should be supported for multiple operating systems.
Database based
Quite similar to the file-based connectors are the database connectors. These are also mainly
used for legacy systems or for the connection to a data warehouse. In case of a “kind of”interface the connector regularly accesses in defined interval or triggered by certain events
defined import/export tables in the database. If such tables doesn’t exist, the connector has to
access directly the database model. This case can turn out to become quite intricate especially
for write access if the data model is not known and inconsistencies have to be avoided.
Message-based
CRP Henri Tudor
Page 16/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Message-based connectors are the most commonly used interfaces in the field of EAI. They
allow to pass a message directly from the interface of an application through the EAI-system
to a receiving external application. The connector handles the particularities of the used
protocols (like TCP/IP, SMTP, JMS or SNA) and provides the message either in
alphanumeric or binary format to the EAI system for further processing. These connectors
should support besides synchronous communication as well the asynchronous (post box)
communication model (as described under section 2.3.2). The asynchronous information
exchange is tolerant against network failures and can provide a more flexible message flow.
This message flow can be divided into three different models. These first model is the active
delivery to exactly one recipient, the second one is the delivery to just one recipient by the
request of the recipient and the last one is the subscriber pool. That means one or more
receivers are subscribing for a message and it will be sent to every prescribed receiver (one to
many approach).
Transaction support
For all these models the delivery of the message and the consistency of the involved systems
has to be guaranteed. Thus a transaction support, which rolls back all changes in case of an
error is helpful. This enables the system to define e.g. a database access together with a
message transfer as an atomic operation that can be completely undone if needed.
Application connectors
Apart from the technical connector view (file-, message-, database-based connectors) another
view, the so called application view of the connectors, is important. The so called application
connectors provide special interfaces not for certain protocols but for particular applications
like SAP, Siebel, Baan, Navision or Oracle.
These Adapters should provide besides the connectivity to the special interface and as well
come with a set of already predefined message structures (message library) for this interface.
This allows to just read or fill the required field of a wanted message (e.g. for an inventory
update) instead of creating the structure by hand.
CRP Henri Tudor
Page 17/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Message split/concatenation
Especially in case of the data exchange through files, it can not always be assured that an
export file contains just one message. This means the connector has to be able to split-up the
file content and generate multiple messages of it. The resulting messages are fed to the EAI
system for processing. On the outbound side, it can be necessary to gather multiple messages
and concatenate them to one output file that will somehow be exported to an external
application.
Decomposition/Recomposition
Depending on how the needed information are distributed within the system infrastructure of
the enterprise, it can be necessary to reformat information coming from different systems to
one message that will be routed to a target system. This process is called recomposition. On
the other hand, the decomposition describes the ability to trigger multiple activities by the
receiving of one message.
Programmable transformation
If the message arrived at the business logic, usually its content will be modified (e.g. date
conversion) and mapped to another message format. The most flexible way to accomplish this
task is the provision of a programming interface that allows to easily access the structures of
the incoming as well as targeted message format. By the use of a programming or scripting
language the user gains the highest degree of flexibility. Besides that he has the possibility to
integrate already existing libraries of the used language to ease the work even more.
It is important to use an established and wide spread language. This assures on one hand the
availability of support libraries and a big community that is able to give support in case of
problems. On the other hand the use of a well known programming language lowers the
obstacle of learning a new programming language before the user is able to accomplish the
actual work.
Exception handling
If an error occurs during the processing of a message (e.g. an invalid message structure) the
system should be able to trigger an appropriate exception handling. That can be the storage of
the erroneous message to a database or a file. The reason of the error should be logged to a
logfile and some additional actions like the creation of a notification email, that informs an
administrator about the occurred error should be triggerable. Advanced error handling
systems store the erroneous messages in a queue or database and provide a frontend that
allows to view and edit these messages. The modified messages can be fed back to the EAI
system for processing.
Compression
For the transmission of messages containing a large amount of data (e.g. graphics), it can be
effective to compress the message before sending it to the external system (e.g. by ftp),
especially if the connection bandwidth is low. On the sending side some applications (e.g.
webserver) exist that are sending their messages compressed (e.g. GZIP). In order to gain
access to the actual message content, the EAI-system has to be able to handle the
compression/decompression of the used algorithms in order to process the message and route
it depending on its content.
Workflow support
CRP Henri Tudor
Page 18/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
A workflow support represents another integration layer on top of the message based
integration layer. This layer extends the system integration to the level of business processes.
Workflow support allows to route the messages on the basis of well defined business
processes. This approach has the advantage that the workflows can be easily adjusted or
extended as the business workflows change.
Command line control
As an EAI system should consist of different components, it is able to control these
components separately. Their state can be requested, queues can be emptied and the
components can be started up or shut down as needed. This usually happens through an
administration frontend, if such a frontend exists for the system. Besides that it can be
necessary to perform these tasks automatically in respect to external events (e.g. to
temporarily shot down a database connector to allow a database backup). This can be
accomplished through issuing the needed commands form the command line or through a
batch script if such a possibility is supported by the EAI system.
Features check:
Check
CRP Henri Tudor
Importance
Exception handling
High
File-based connectors
High
Programmable transformation
High
Message-based connectors
High
Application-connectors
Medium
Decomposition
Medium
Recomposition
Medium
Database-based connectors
Medium
Transactional support
Medium
Workflow support
Medium
Command line control
Low
Compression support
Low
Page 19/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
2.3.4 Security
Communication channel encryption
Especially for the communication with external systems, that are not located within a
encapsulated intranet, it is important to secure the transmission against intervention of 3rd
parties. An encryption of the communication channel like https for the webserver
communication, SFTP for an ftp-connection or a general traffic encryption via VPN can
provide the required security level. This is a crucial requirement of some vertical markets like
the healthcare or banking sector in order to assure the privacy of sensitive information.
Message encryption
If the interface of the external system does not support the communication channel
encryption, the data itself can be encrypted. The most common standards like PQP or
S/MIME for email including the respective public key infrastructure should be supported by
the EAI system.
Authentication
Remote clients that allow the remote administration or monitoring, access the EAI-system via
an interface. This access has to be secured to avoid the intrusion into and modification of the
system by non-authorized users. Also the access to and from external systems (that are e.g.
not located in the secured intranet) can be secured by the use of authentication techniques. A
possibility is the authentication by username and password. A check of the requester’s IP
address can secure the access even more. An advanced authentication mechanism will
provide a permission management that allows the distinction between different user roles.
Message tracking
In some vertical markets like the healthcare or the banking sector, it is important to provide a
possibility to reproduce the change and transfer of system information, because of legal
reasons. That means that information concerning the traffic over the EAI-system like
transaction date, time, source, destination, message type and in some cases even the messages
themselves should be recordable within the system.
This can happen by log file messages or even the storage of the information in a database. As
the storage location is the central place of all message information and thus most probably
contain quite sensitive data, the encryption should here be an issue as well.
Security check:
Check
CRP Henri Tudor
Importance
Authentication
Medium
Communication channel encryption
Medium
Message encryption
Medium
Message tracking
Medium
Page 20/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
2.3.5 Support
Consulting
Open Source software does not mean that there has not to be commercial support available.
For companies and institutions that do not have an IT-department or their core business in the
IT sector, it can be crucial to have a consulting company at hand that provides timely and
competent support at the deployment phase or in case of problems. Especially if the company
that likes to introduce an EAI system has its core business in a sensitive domain like the
healthcare or in the banking sector this aspect can quickly become important. Support that is
provided by several different companies guarantees the independence of the user.
Documentation
The documentation is especially for Open Source projects the most important means of
support. The minimum requirement here is a user manual that describes the structure of the
system including the involved components and their usage. A plus are examples that clarify
the use of the system. From the developers point of view, the system should provide a
development manual describing the main techniques that where used for the development of
the system, the interfaces of the involved classes (e.g. in form of a JavaDoc document) and
the structure of the used protocols.
FAQ
A helpful part of the documentation is the list of frequently ask questions (FAQ) that provides
a quick help to the most frequent problems and questions usually occurring during the first
use of the EAI-system.
Forums
Forums provide an interactive support possibility for the users as well as for contributors who
like to develop additional features for the system or report bugs. If a forum is well populated,
it is a good source of information and can establish the contact to other users or even the
developers who are able to help in case of problems or questions. Topics that have already
been handled can also be viewed by browsing the forum or by using the search function. If
the activity in the forum is low, a mailing list would be the better alternative, because the
community has to actively enter the forum in order to recognize new requests.
Mailing lists
The advantage of mailing lists against forums is proactive delivery of new posts to the
mailbox of the registered user. But if there is too much activity in a mailing list, this can lead
to spam, as to much information is no information. The list-server of the mailing list should
provide an archive of the mailing list. This feature allows the access of older information that
not longer exists at the users side or were spread before the user joined the mailing list. A
sophisticated search functionality is here crucial.
Chat channels
A chat channel could be a useful mean for clearing up questions and problems that occur
during the use of the system, as it provides “realtime” feedback if somebody with the needed
competences is available on the other end. This synchronous communications unfortunately
as well presents a drawback as it is not guaranteed that somebody is available at the time help
is needed.
CRP Henri Tudor
Page 21/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Tutorials
Tutorials should explain at least the most basic & common functionalities of the EAI-system
by a step by step creation of examples. This helps to become fastly confident with the most
important features of the system. Especially for graphical frontends, the supply of training
movies that show in a graphical way what to do in order to accomplish a task is a plus.
Support check:
Check
CRP Henri Tudor
Importance
Consulting
High
Documentation
High
Forums
High
FAQ
Medium
Mailing lists
Medium
Tutorials
Medium
Chat channels
Low
Page 22/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
2.3.6 Usability
Graphical user interfaces
The usability is one of the key-factors of an EAI-system, as it will mostly be deployed in
quite heterogeneous and thus complicated IT-infrastructures. As easier a system is to use, as
less time and training has to be invested until the IT department is able to execute the
integration of the IT-infrastructure subsystems.
The most common way to increase usability is the provision of graphical user interfaces
(GUI). The GUI-interfaces allow a comfortable, remote change and control of the system
parameters. The GUIs for an EAI-system can be divided into three categories: Configuration,
administration frontends at one side and monitoring frontends at the other side.
GUIs should be clearly and logically structured and the handling should be intuitive (e.g.
meaning of buttons should be obvious, most important features should be accessible from the
main panel).
The configuration frontend should preferably allow the access to all configurable system
components and features. It should be possible to define message structures including multi
level delimiters for delimited messages and fixed length fields for non delimited messages. A
graphical programming interface for dynamic processing units and a drag & drop mapping
possibility for messages round up the configuration tool.
The administration frontend should provide access to all configurable components. The
status of the components should be checkable through the administration frontend and it
should be possible to start and stop components either directly or scheduled.
The monitoring frontend should provide a clear overview about the state of the different
components (connectors, queues, processing units) and should allow to stop, shutdown or
startup a component. A graphical representation of the system components and the routing
amongst them is a useful extra. The messages, currently located in the queues and in an
optimal manner as well the messages already taken from the queues, should be viewable.
Some commercial systems also providing a possibility to change the content of the messages.
The monitor should provide the possibility to change the log-level of the components and
view their logfiles.
Configuration
The structure of the configuration files have to be consistent and coherent. The naming of the
parameters should be as self explaining as possible. Sample configurations and detailed
explanations of the configuration parameters including information about default values and
obligation help the user to quickly find his way through the EAI configuration. The use of a
well established notation like XML additionally supports the user with his configuration
approach.
CRP Henri Tudor
Page 23/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Test schema
462
chief secretary 2271,21
FTP Message
54,Myers,Michael,1962/04/
01,comptable,4773,04
32874senior sales manager10783,74
54
comptable 4773,04
FTP
System A
System C
File
Merger
54,Myers,Michael,01.04.
1962,comptable,4773,04
Date modifier
54,Myers,Michael,1962/04/
01,comptable,4773,04
TCP/IP
Michael|Myers|01.04.1962
Jean|Réno-Didier|25.09.1954
Hanna|Häusel-Hansen|21.07.1984
eMail
System B
For the testing of the system usability from the users point of view, a test schema has been
developed, that covers some classical requirements for an EAI system:
•
External system A sends messages in file-format (one message per file). The elements
of the message have fixed length. The message itself has the following structure:
<id(5)> <function(20)> <salary(7)>
•
External system B sends messages over a TCP/IP interface. The elements of the
message are separated by delimiters. The message itself has the following structure:
<given name>|<family name>|<birth date(DD.MM.YYYY)>
•
A processing unit has to wait until one message from both systems came in. It then has
to merge the two messages. The resulting message is separated by delimiters and has
the following structure:
<id>,<family name>,<given name>,<birth date>,<function>,<salary>
•
The date in one field of the messages coming from external system B is in the format
“DD.MM.YYYY” and has to be changed to the format “YYYY/DD/MM”
•
The resulting message is written to a file on an external ftp account of a system C.
•
In parallel an email will be created that holds the content “Message number XXX has
been sent to YYY”.
XXX stands for the ID-field found in the messages coming from System A. YYY
stands for the name fields found in the messages coming from System B.
Usability check:
Check
CRP Henri Tudor
Importance
Administration frontend
High
Configuration frontend
High
Configuration files
High
Monitoring frontend
High
Test schema
High
Page 24/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
2.3.7 Project state
Number of installations / References
This is a parameter that is quite hard to determine for an Open Source project. Due to its
characteristic it is available to the public and can be – unlike a commercial system –
downloaded without signing a contract with the vendor. Thus, the author of an Open Source
project receives much viewer feedback about who is using his product and the way it is used
(test, production, for further development). Other sources, besides the direct feedback, for
the estimation of the number of installations/users are the support forums. Because of the
points mentioned earlier, it should not be put too much weight onto this parameter, but a list
of known references (especially bigger companies) can nevertheless permit a conclusion
about the support of and the experience with the product.
Time on market
The period, the system is already available on the market can be an indicator of the stability
of the system. The assumption is based on the fact that the stability and variety of features
increases with its lifetime.
Community
An indicator for the quality and as well the expectation of lifetime of a system is the size and
the feedback of the community that is using the system. Furthermore the community can be a
great source for help in case of any problems with the chosen EAI-system.
Number of coders/contributors
As more people actively working on a project, as faster the project evolves. Further it
increases the probability of fast fixing if a bug has been found. The coders are working
officially on a regular base on the project whereas the contributors are providing occasionally
the changes, additions and new features that resulted as a side-effect from their
customizations for a local deployment, to the project team.
Project state check:
Check
CRP Henri Tudor
Importance
Community
Medium
Number of coders/contributors
Medium
References
Low
Time on market
Low
Page 25/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
2.4 Check list
General
Importance
License
High
OS support
High
System abstract presentation
Medium
System requirements
Medium
3rd party software
low
Architecture
Importance
Component based architecture
High
Connector as client
(outbound connector)
High
Connector as server
(inbound connector)
High
Custom processing units
(Transformation)
High
Dynamic message routing
High
Message container
High
Predefined message routing
High
Scalability
High
Synchronous communication
High
Asynchronous communication
Medium
Connector polls messages
(inbound connector)
Medium
Defined module interface
(API)
Medium
Predefined processing units
(Transformation)
Medium
CRP Henri Tudor
Page 26/112
Project Freegate: Market Survey of Open Source EAI Software
Features
Importance
Exception handling
High
File-based connectors
High
Programmable
transformation
High
Message-based connectors
High
Application-connectors
Medium
Decomposition
Medium
Recomposition
Medium
Database-based connectors
Medium
Transactional support
Medium
Workflow support
Medium
Command line control
Low
Compression support
Low
Security
Importance
Authentication
Medium
Communication channel
encryption
Medium
Message encryption
Medium
Message tracking
Medium
CRP Henri Tudor
Authors. Oechsle, Donak
Date: September, 29th, 2006
Page 27/112
Project Freegate: Market Survey of Open Source EAI Software
Support
Importance
Consulting
High
Documentation
High
Forums
High
FAQ
Medium
Mailing lists
Medium
Tutorials
Medium
Chat channels
Low
Usability
Importance
Administration frontend
High
Configuration frontend
High
Configuration files
High
Monitoring frontend
High
Test schema
High
Project state
Importance
Community
Medium
Number of
coders/contributors
Medium
References
Low
Time on market
Low
CRP Henri Tudor
Authors. Oechsle, Donak
Date: September, 29th, 2006
Page 28/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
3 Evaluation
3.1 System identification
The first step consists of the screening of the internet and the characteristic websites for Open
SourceOpen Source EAI-projects.
The following sources have been of great help for the gathering Open SourceOpen Source
EAI-solutions:
• EAI User Group - Open Source EAI technologies (www.eaiusergroup.com/modules.php)
• Manageability – Open Source EAI systems written in Java (www.manageability.org)
• Ebizq -The Non-Vendor Source of EAI systems (www.ebizq.net)
• SourceForge – Platform for Open Source projects (sourceforge.net)
• FreshMeat – Information platform for Open Source projects (freshmeat.net)
31 Open SourceOpen Source EAI-projects could be identified during the screening phase:
• 1060 NetKernel
• MessageForge
• Proteus
• Babeldoc
• Mirth
• Retic / JyRetic
• Business Integration Engine
• Mule
• ServiceMix
• Clover.ETL
• NaradaBrokering
• S-integrator
• Conductor DocSOAP XDK
• Octopus
• SolAce
• ConnectorWorks
• OpenAdaptor
• Tambora
• DataServer
• OpenEAI
• xBus
• elemenope
• OpenQueue
• Xineo XIL
• it.gim
• OpenSymphony
• XMLBlaster
• Jengine
• Orbeon
PresentationServer
• mec-eagle
• OSMQ
Because the understanding of EAI can differ widely, a two-phase evaluation process is
required.
Thus the first evaluation phase is primarily used to filter the EAI systems that match to the
definition of EAI this survey is based on (as described under 2.2.1) and fulfil some other core
criteria before it comes to a in-depth testing in phase 2 where the remaining systems will be
checked against the detailed check list.
CRP Henri Tudor
Page 29/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
3.2 Evaluation phase I
This evaluation phase checks the systems identified under “3.1 System identification” at page
29 against the core criteria as described at page 12.
In the following an overview about the systems that didn’t pass the first evaluation phase.
This overview consists of the project name, a link to the systems website, a short description
of the system and the reason why it didn’t pass the evaluation.
The systems that passed the first phase are discussed in section 3.3 beginning at page 46.
3.2.1 Business Integration Engine (BIE)
Name:
Business Integration Engine
Web Site :
www.brunswickwdi.com/features
Description
:
Business Integration Engine
(BIE) is designed to help
organizations exchange data
created in different applications
on various platforms with
partners,
suppliers,
and
customers in order to streamline
processes
and
improve
efficiency. It includes a map
builder and dashboard, supports
multiple protocols like SOAP,
EDI X12, HIPAA etc.
Reason:
The documentation (about 200 pages) costs $195. Because there was no other
documentation available, the project BIE could not be evaluated any further.
3.2.2 Clover.ETL
Name:
Clover.ETL 1.1.6 (xx.10.2005)
Web Site :
cloveretl.berlios.de
CRP Henri Tudor
Page 30/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Description
:
Clover.ETL is a Java based ETL (Extraction, Transformation, and Loading)
framework which can be used to transform structured data. While using JAVA
technology it allows for platform independence. It can be used standalone - as
an application run from command line or can be embedded into applications.
Reason:
The system is purely based on files and databases as connectors (ETLsolution).
3.2.3 Conductor DocSOAP XDK
Name:
Conductor DocSOAP XDK
Web Site :
www.commerceone.com/developers
Description
:
Commerce One Conductor DocSOAP XML Development Kit (XDK).
Reason:
The system is not a framework consisting of connectors and transformers.
This Open-Source Java
Web Services SOAP, and
XML Development Kit
provides an effective and
efficient way of developing
Web services solutions
where the emphasis is on
making it easy to do
document Style SOAP.
Commerce One tests show
that the DocSOAP XDK
supports more features of
the XML schema and
processes larger XML
documents over twice as
fast as any other solution
available.
3.2.4 connectorWorks
Name:
ConnetorWorks 1.0
Web Site :
www.connectorworks.org
CRP Henri Tudor
Page 31/112
Project Freegate: Market Survey of Open Source EAI Software
Description
:
Authors. Oechsle, Donak
Date: September, 29th, 2006
The 1.0 release provides an open-source framework for implementing XML
document-centric interactions with an enterprise information system that:
•
Works with JAXM, JAXP, SAX, DOM, JAXB, XSLT, XML
filters/pipeline, and JMS messaging (Interoperability)
•
Leverages JMX-based management and monitoring capabilities for
EIS interactions (Manageability)
Supports the transformation to/from a canonical business markup language
like OAGIS BOD using XSLT and SAX filter chains to/from internal EIS data
structures/APIs such as an SAP R/3 IDoc (Reusability)
Reason:
The connectorWorks project is a small project (52 Java source code files)
whose functionality is not clear, because the documentation is nearly not
existent. There is a single web page with a single internal link in order to
download a ZIP file. The downloaded ZIP file contains a PDF file whose
relation to connectorWorks is not clear. In addition, the downloaded version is
1.0 Beta from April 2003. There are no mailing lists or forums. The project
seems to be dead.
3.2.5 DataServer
Name:
DataServer 2.0
Web Site :
www.mii.ucla.edu/DataServer
Description
:
DataServer is an Open Source XML gateway, specially tailored for the
medical domain. Built upon the high-performance Apache Cocoon framework
and J2EE platform, DataServer provides an enterprise-quality platform for
aggregating XML-based patient medical records, in both clinical and research
applications.
DataServer is a middleware, situated between clients and traditional Health
Information Systems (HIS), Radiology Information Systems (RIS) and Picture
Archive and Communication Systems (PACS). It supports relational (SQL),
SOAP, and HTTP data sources out of the box, but is highly extensible for
custom types. A suite of web-based tools allows for the centralized
management of distributed data sources, and the rapid deployment of new
services.
Reason:
CRP Henri Tudor
At first sight the system is not a framework consisting of connectors and
transformers. The only external interface to the system is by sending XML
requests to it. But because of the possibility of running Cocoon as standalone
Page 32/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
system with different generators, the system may well be used for general
application integration. We excluded it, however, from further investigations
because at first sight its architecture is not based on the connector-transformer
paradigm.
3.2.6 elemenope
Name:
Elemenope 4.2rc2
Web Site :
elemenope.org
Description
:
elemenope is an Enterprise Application Integration [EAI], Service Oriented
Architecture [SOA], and general messaging framework.
•
elemenope provides the capability for massive decoupling of an
enterprise's components through standardized interfaces for
communications.
•
elemenope provides complete abstraction of both transmission
protocol and functional components.
•
A project may connect components via a particular protocol or
messaging standard, and not be stuck with that technology, as they
may completely change the messaging technology deployed with a
simple change to a configuration file, i.e. no code changes.
•
elemenope allows an organization to easily create a large scale multiplatform application to conduct messaging or transaction processing.
•
elemenope abstracts away most connectivity issues and promotes
integration of new software with legacy applications through
simplification of connections.
•
elemenope simplifies architecture of large systems by standardizing
functional components and message pathways. One can very easily
trace problems or collect metrics at multiple levels, as every unit of
application functionality implements the same interface, and all
requests follow a similar path.
•
elemenope implements the following connector/transport sets:
o Java Message Service [JMS]
o Web Services (SOAP, XML-RPC)
o Direct Call
o Native IBM MQSeries (WebSphereMQ)
o Built-in mainframe connectivity classes for use when
connecting to a mainframe running IBM MQSeries with the
IMS Adapter or IMS Bridge
elemenope™ has been in development since 1999. It and some of its
precursors are currently in production use within several organizations large
and small.
Reason:
CRP Henri Tudor
We could not find any documentation except the Javadoc files. The project is
Page 33/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
a smaller project consisting of 44 Java source code files. The project seems to
be inferior to other projects like Babeldoc, Mule, and OpenAdaptor.
3.2.7 it.gim
Name:
It.gim 0.9
Web Site :
www.it-financial.de
Description
:
it.gim is an Enterprise Application Integration tool, which includes reliability,
scalability, security, error tolerance, availability and platform independence.
Reason:
It was not possible to get more information on it.gim. There are no additional
web pages.
3.2.8 jEngine
Name:
JEngine 2.0.1
Web Site :
www.jengine.org
Description
:
jEngine is an Open Source, standards-compliant, enterprise integration engine
implemented in Java. The server framework, based on Java 2 Platform
Enterprise Edition (J2EE), provides a robust standard for deploying a multitier enterprise integration engine. By utilizing the J2EE standard, a complete
framework of standardized components, services, and interfaces will be
developed while maintaining the promise of portability across operating
systems.
jEngine is a co-development
effort by two independent
software development firms.
Both firms have long-time
roots in the integration
business in healthcare. Their
goal is to bring a measure of
power, freedom and cost
savings to hospital systems by
building a publicly owned
message brokering system.
jEngine uses JBoss’ core for database persistence, transaction support,
messaging and integration of components based on Java Management
Extensions (JMX) specification. jEngine’s JMX components currently include
TCP/IP HL7 2.x client and server components. Due to the adoption of the
HL7 2.x standard within healthcare organizations and the singular focus of the
HL7 organization on the interface requirements of the entire health care
industry, these components were the first to be developed.
CRP Henri Tudor
Page 34/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Internal jEngine messaging uses
the Java Message Service
(JMS), which provides a
reliable
means
for
the
asynchronous exchange of data
within the healthcare enterprise.
The jEngine core utilizes
standards-based
XML/XSLT
transformations for message
structure manipulation.
Reason:
The project seems to be no longer alive; the latest version 2.0.1 was released
in October 2003. The documentation is not very elaborated and comprises
three thin PDF files: a white paper (2,5 pages), a figure, and an administration
manual (7 pages). There are no forums or mailing lists. The only contact
information is an e-mail address. The jEngine project is a rather small project
– the source code consists of less than 30 Java files, half of them dealing with
HL7.
3.2.9 mec-eagle
Name:
mec-eagle
Web Site :
www.mec-eagle.org
Description
:
m-e-c eagle is the first Open
Source, OS independent, Java,
XML and XSL based B2B
integration software, which
gives you the right tool for it.
It has an high basic
functionality
with
many
components, which give you a
set of integrated tools, which
make it possible to create any
business
solutions
for
integrating different systems
with each other.
Reason:
The project seems to have died. The mailing list is turned off, CVS is turned
off, and the last post on the forum is from May 2003.
3.2.10 Message Forge
Name:
Message Forge
Web Site :
messageforge.sourceforge.net
CRP Henri Tudor
Page 35/112
Project Freegate: Market Survey of Open Source EAI Software
Description
:
Authors. Oechsle, Donak
Date: September, 29th, 2006
The framework was conceived and created during the development of an online
trading system for a major bank on Wall Street. The project made heavy use of
TIBCO/RV. Features include transparent message definitions, automatic
generation of JAVA classes from XML definitions, a type-safe messaging
JAVA API, run-time message validation, services to marshal/unmarshal
messages, uniform message definitions across all tiers and high performance.
XML Message
Specifications
Class
Code Generator
JAVA Source
Compile
Class
JAVA Source
Class
JAVA Source
Reason:
The system is not a framework consisting of connectors and transformers, but a
code-generator which creates classes from message specifications.
3.2.11 Mirth
Name:
Mirth 1.1
Web Site :
www.mirthproject.org
Description
:
Mirth is an Open Source
cross-platform HL7 interface
engine, based on Mule, that
enables
bi-directional
sending of HL7 messages
between
systems
and
applications over multiple
transports.
Furthermore, it provides
tools and interfaces for
developing, deploying and
monitoring of the system.
Handled messages are encrypted and stored to an internal database. These
messages can be browsed and even exported to a file by the use of the
administration frontend.
Professional support is provided by the US company WebReach Inc.
Reason:
CRP Henri Tudor
The system is based on Mule, which will be detailed examined in section 3.3.3
at page 59. Mirth solely focuses on the exchange of HL7 messages, which
strongly restricts its use as general EAI system.
Page 36/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
3.2.12 NaradaBrokering
Name:
NaradaBrokering 1.1.2
Web Site :
www.naradabrokering.org
Description
:
The NaradaBrokering project
at the Community Grids Lab
is an Open Source project that
researches fundamental issues
pertaining
to
distributed
middleware systems.
These include, among others,
issues of efficient routing,
support
for
complex
interactions,
robustness,
resilience, ordering, security
and trust. NaradaBrokering
aims to provide a unified
messaging environment that
integrates grid services, web
services,
peer-to-peer
interactions and traditional
middleware operations.
The NaradaBrokering project has been in the Open Source domain for the past
3 years.
NaradaBrokering is a distributed messaging infrastructure and provides two
closely related capabilities.
First, it provides a message oriented middleware (MoM) which facilitates
communications between entities (which includes clients, resources, services
and proxies thereto) through the exchange of messages.
Second, it provides a notification framework by efficiently routing messages
from the originators to only the registered consumers of the message in
question.
Reason:
The system is not a framework consisting of connectors and transformers, but
an event brokering system designed to run on a large network of cooperating
broker nodes. Its main purpose is the support of grid and P2P computing.
3.2.13 Net Kernel
Name:
Net Kernel 2.0.6
Web Site :
www.1060research.com/netkernel/index.html
Description
:
NetKernel is an XML Application Server built on a microkernel with a
functionality set including Web-service SOAP1.1, SOAP1.2 and REST
infrastructure, XML language runtimes, powerful libraries of XML
technologies, developer tools, documentation and a web management
interface.
CRP Henri Tudor
Page 37/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
The NetKernel microkernel manages URI address spaces and schedules URI
requests into these spaces. It embodies a set of simple self-consistent concepts.
Reason:
•
All software components are services
which are addressed by URI.
•
A component's URI is published in an
internal URI Address Space.
•
URI Address Spaces are encapsulated
in modules which can be layered into
larger virtual URI address spaces.
•
Software components may be clients
which issue URI requests against the
Virtual URI Address Space.
The system is not a framework consisting of connectors and transformers.
3.2.14 Octopus
Name:
Octopus 3.4-1
Web Site :
octopus.objectweb.org
Description
:
Octopus is a Java-based
Extraction, Transformation, and
Loading (ETL) tool. It may
connect to any JDBC data
sources
and
perform
transformations defined in an
XML file.
A loadjob-generator is provided to generate Octopus
loadjob skeletons (and even
DODS DOML files!) from an
existing
database.
Many
different types of databases can
be mixed (MSSQL, Oracle,
DB2, QED, JDBC-ODBC with
Excel and Access, MySQL,
CSV-files, XML-files,...).
Four special JDBC drivers come with Octopus to support JDBC access to
CSV-files (CSV-JDBC), MS-SQL (FreeTDS), XML (XML-JDBC) and
property files (i18n-JDBC).
Octopus provides a very generic way to transform data. Transformations can
be defined by implementing transformer interfaces or using JavaScript code
(directly in a load job XML file).
Reason:
CRP Henri Tudor
There is no framework for general connectors. Databases and files are the only
sources, databases are the only sinks.
Page 38/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
3.2.15 OpenEAI
Name:
OpenEAI 3.0 build 5
Web Site :
www.openeai.org
Description
:
The purpose of the OpenEAI Project is to discover and document the
controlling dynamics, principles, and practices of enterprise application
integration and to present, implement, and promote those findings. The
OpenEAI Project presents findings in the form of the OpenEAI methodology
and OpenEAI software for implementing integrations.
The OpenEAI Project is comprised of six distinct, but closely-related
departments, which address
•
OpenEAI Methodology,
•
Application Foundation APIs,
•
Message Object API,
•
Message Definitions,
•
Reference Implementations,
and Deployment and Administration.
Reason:
The system is not a framework consisting of connectors and transformers. The
source code comprises 130 Java file which deal primarily with XML messages
and message sending and receiving. A citation from the document “API
Introduction” says:
The heart of the the OpenEAI API is the OpenEAI Message Object API,
referred to as the MOA. OpenEAI Java Message Objects know how to build
themselves from XML and serialize themselves to XML. They know how to
build all the messages specified by the OpenEAI Message Protocol and send
them using a JMS provider. They know how to translate the applicationspecific values for data fields for application X and translate them to
enterprise values. They know how to take enterprise values and translate them
to appropriate application-specific values for application Y. The Java Message
Objects that must be developed for an organization’s own MOA can be
programmatically generated from XML message definitions by an MOA
generation application provided by the OpenEAI Project.
Moreover, the web pages announces more than there is really available. For
example, the web pages for the six departments all lead to the same resource
web page which contains 7 documents.
All these documents are from January 2003. One of the documents called
“OpenEAI Message Definitions”, that does not have any relevant content, still
says: “We anticipate availability toward the end of February 2003.
3.2.16 OpenQueue
Name:
OpenQueue
Web Site :
openqueue.sourceforge.net
CRP Henri Tudor
Page 39/112
Project Freegate: Market Survey of Open Source EAI Software
Description
:
Reason:
Authors. Oechsle, Donak
Date: September, 29th, 2006
OpenQueue is an open protocol for publish-andsubscribe message queuing. This enables languageindependent,
loosely-coupled,
asyn-chronous
communication between applications running on
different machines.
The system is not a framework consisting of connectors and transformers, but
an Open Source alternative to message queuing products such as MQSeries.
3.2.17 OpenSymphony
Name:
OpenSymphony 2.7.0
Web Site :
www.opensymphony.com
Description
:
OpenSymphony is a Java Open
Source project designed to
provide application developers
with a suite of components for
rapid development of enterprise
class Java applications.
These components are loosely
coupled, allowing the application developer to use one or
more of them in a single application.
The components are:
CRP Henri Tudor
•
OSCore: a set of utility-classes useful in any J2EE application
•
XWork: command pattern framework
•
OSWorkflow: components to allow construction of applications based
around organization workflow; models entity versioning system, states
(e.g. draft, approved, published) and rules (e.g. user X may change this
version to the approved state)
•
Quartz: an enterprise level job scheduling system that can be
integrated with, or used along side virtually any J2EE or J2SE
application
•
OSUser: user-management system; contains tools for storing,
managing, verifying and authenticating users including web-based
applications; uses J2EE standards for authentication
•
OSAccess: Entitlement Security Engine; this module uses a pluggable
provider system for fine grain access control; this completes the
security that is left out of the J2EE standard
•
WebWork: an MVC framework that stresses simplicity and
interoperability
Page 40/112
Project Freegate: Market Survey of Open Source EAI Software
Reason:
Authors. Oechsle, Donak
Date: September, 29th, 2006
•
SiteMesh: presentation layer that sits on top of existing webapplication; will take simple pages produced by server (static, JSP
generated, CGI, anything) and provide customized presentation
•
OSCache: page caching mechanism to greatly improve the
performance of your site
•
ClickStream: utility to show the current users on your site, and where
they've been in detail; this allows you to track 'click streams' or 'traffic
paths' across your site
None of the components constitute a framework consisting of connectors and
transformers.
3.2.18 Orbeon PresentationServer
Name:
Orbeon PresentationServer 3.0.1
Web Site :
www.orbeon.com/software
Description
:
Orbeon PresentationServer (OPS) is an Open Source J2EE-based platform for
XML-centric web applications. OPS is built around XHTML, XForms, XSLT,
XML pipelines, and Web Services, which makes it ideal for applications that
capture, process and present XML data.
Unlike other popular web application frameworks like Struts or WebWork that
are based on Java objects and JSP, OPS is based on XML documents and
XML technologies. This leads to an architecture better suited for the tasks of
capturing, processing, and presenting information in XML format, and often
does not require writing any Java code at all to implement your presentation
layer.
While similar to Apache Cocoon, OPS benefits from standards-based forms
processing using XForms, richer controller semantics, and full-featured XML
pipelines described with XPL, the XML Pipeline Language.
Reason:
CRP Henri Tudor
The system is not a framework consisting of connectors and transformers, but
a system which is comparable to Apache Cocoon. Although there is an
extremely valuable tutorial and other types of documentation, and although
there is support for querying data from an SQL database or an LADP server,
we do not consider the Orbeon PresentationServer as a general EAI solution.
Page 41/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
It has similarities with DataServer.
3.2.19 OSMQ
Name:
OSMQ 2.0.4
Web Site :
www.osmq.org
Description
:
Open Source Message Queue (OSMQ) is an advanced asynchronous message
router, message broker and message middleware framework developed by
MQue Systems. The product and client adapters are 100% Java based, with an
open and published message interface to support non-Java clients. OSMQ was
designed for high performance, high reliability, and ease of use, with a Java
interface that is significantly less complex than JMS. OSMQ supports a
publish-subscribe and point-to-point message architecture, employing a
queue-based store-and-forward model of message distribution.
Reason:
The system is not a framework consisting of connectors and transformers, but
a message queuing system.
3.2.20 ServiceMix
Name:
ServiceMix 3.0
Web Site :
servicemix.org
Description
:
Apache ServiceMix is an
Enterprise Service Bus (ESB)
that
combines
the
functionality of a Service
Oriented Architecture (SOA)
and
an
Event
Driven
Arthitecture (EDA) to create
an agile, enterprise ESB.
ServiceMix is an Open
Source distributed ESB built from the ground up on the Java Business
Integration (JBI) specification JSR 208 and released under the Apache license.
The goal of JBI is to allow components and services to be integrated in a
vendor independent way, allowing users and vendors to plug and play.
Reason:
CRP Henri Tudor
ServiceMix provides an infrastructure that is quite similar to Mule and also
supports the same technologies like ESB, JBI (even for the core API), SEDA
and SOA (see also section 3.3.3 at page 59). But unlike Mule, it does not
provide an infrastructure to simply configure a schema that allows to integrate
applications and route information between these.
Page 42/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
3.2.21 S-integrator
Name:
S-integrator 1.06
Web Site :
www.s-integrator.org
A
service-oriented
integration server that
hosts Service Stores
which
authorize,
monitor, manage and
run
services
while
making them available
through web services,
HTTP
and
other
protocols.
Included
listeners and inbound
adapters support address
banning,
content
filtering and a virus
detection filter. Included
outbound
adapters
integrate
databases,
mainframes
(APPC),
web servers, FTP, mail
Description
:
and other technologies.
Administration is performed using a web browser or cell phone that accesses
the embedded web server. Service Flows provide process automation and hot
deployment is supported. S-integrator is single-source, small footprint and
only requires JRE 1.2 and a database with JDBC driver.
The system has been deployed at American Express, one of the three leading
credit card companies.
Reason:
CRP Henri Tudor
The system neither provides a sufficient documentation nor any examples that
would allow to implement a test schema & actually use the system. The
community could also not used as source for information, as none seems to
exist.
Page 43/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
3.2.22 SolAce
Name:
SolAce Secure Wire 1.2
Web Site :
www.snapinhipaa.com/ss/
Description
:
SolAce Server is a secure and
reliable messaging server which
supports point-to-point and huband-spoke topologies. It can
securely transfer EDI and other
types of files over any IP-based
network without VPNs or other
software. The protocol is based on
concepts in IETF's AS2 protocol,
including features such as signed
and authenticated receipts.
A Web interface serves as an
administration and mailbox portal to let users maintain their own mailboxes
and files. SolAce Server was designed for the proposed HIPAA Security Rule,
which was stricter than the final rule.
Professional support is provided by the main developing company named
Vertex.
Reason:
The web page says: “SolAce Server has been discontinued as of 12/15/2004
due to lack of interest and for being a personal money pit”.
3.2.23 Tambora
Name:
Tambora 3.0
Web Site :
tambora.zenplex.org
Description
:
A leading edge Enterprise Application Integration (EAI) tool specifically
created for the printing and publishing industries. Tambora can adapt to any
organization's internal processes and requirements. At the heart of Tambora is
a world class workflow engine which will allow Tambora to seamlessly
integrate into any existing enterprise.
Reason:
Neither the web page nor the application seem to be available. Thus the
system will be mentioned but excluded from further investigation.
3.2.24 Xineo XIL
Name:
Xineo XIL 1.1.0
Web Site :
software.xineo.net/xil.jspx
Description
:
Xineo XIL (XML Import Language) defines an XML language for
transforming various record-based data sources into XML documents, and
provides a fully functional XIL processing implementation. This
implementation has built-in support for relational (via JDBC) and structured
CRP Henri Tudor
Page 44/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
text (like CSV) sources, and is extensible thanks to its public API, allowing
dynamic integration of new data source implementations.
Reason:
The focus of Xineo XIL is more on the transformation part, and less on the
connectors part. Currently, the only data sources are files and databases,
although other source types can be implemented by the users of the system.
3.2.25 XMLBlaster
Name:
XMLBlaster 1.0.6
Web Site :
www.xmlblaster.org
Description
:
XmlBlaster is a publish/
subscribe and point to point
MOM
server
which
exchanges messages between publishers and subscribers. The message is
described
with
XMLencoded meta information
Messages may contain
everything, GIF images,
Java
objects,
Python
scripts, XML data, a word
document, plain text.
Communication with the
server is based on CORBA (using JacORB) or RMI or XmlRpc, clients are
free to choose their preferred protocol. Other protocols like email, socket or
SOAP may be plugged in. Subscribers can use XPath expressions to filter the
messages they wish to receive.
XmlBlaster uses the Sun XML parser for XML parsing, and XT from James
Clark for XSL parsing. The XmlBlaster server is pure Java. PHP, Perl,
Python, C, C++, C#, Visual Basic.net and Java (applications, servlets, applets)
client samples are delivered in the XmlBlaster distribution.
Reason:
CRP Henri Tudor
At first sight the system is not a framework consisting of connectors and
transformers, but a message queuing system. The message queuing server can
be accessed by special APIs in different languages. But because of the
possibility of developing different plugins, the system may well be used for
application integration. It was however excluded from further investigations
because its main purpose is not application integration.
Page 45/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
3.3 Evaluation phase II
The second evaluation phase checks in-depth the systems that passed the first evaluation
phase described in section 3.2 by the use of the check list as described under “Evaluation
detail criteria“ at page 13.
CRP Henri Tudor
Page 46/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
3.3.1 Babeldoc
Babeldoc is a document processing system that claims to be especially suited for Business-toBusiness (B2B) environments and similar integration projects. Babeldoc has a flexible and
reconfigurable processing pipeline through which documents in any format, binary or text
based, flow. These pipelines transform the document. Additionally, Babeldoc has a
sophisticated and extensible journaling system so that documents may be reprocessed and
resubmitted as well as tracked through the system.
Its goal is to be a lean tool that provides sufficient functionality for system integration in an
easy to use way.
Architecture
The Babeldoc system consist of the following main elements:
• Scanner
scans external sources frequently for messages and feeds them as documents into a
pipeline.
• Document
consists of the data coming from the external applications and additional meta information
called attributes e.g. filename in case of data coming from a file.
• Ticket
a unique id that will be assigned to a document if it enters the pipeline. This id allows to
identify the document at any stage of the pipeline.
• Pipeline stage
the smallest step of a pipeline that applies business logic to the document, routes it to a
different step depending on certain conditions or sends the file to an external application.
• Pipeline
a series of pipeline steps.
• Journal
coordinates the processing of a document, logs processing information and allows to feed
a document back to any stage of a pipeline, if needed.
In the following, the interaction between these components will be explained:
Figure 5 Babeldoc architecture schema
CRP Henri Tudor
Page 47/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Scanner
A scanner
regularly examines the interfaces of external applications . If the scanner
fetches data from the interface, it forwards it to the attached pipeline for processing. Scanners
are stand alone processes that perform the scanning of the different external sources like a
FTP account or a database.
They are able to feed the fetched data either synchronously one after another to the pipeline
or to fetch and provide all messages at once through the use of parallel threads (asynchronous
processing). Optionally a thread pool may be used in the asynchronous mode.
Pipeline
A pipeline consists of a set of processing steps that are linearly arranged, the so called
pipeline stages. A pipeline has a defined entry point to which an incoming message is fed.
As soon as a binary or text message arrives at the pipeline , a document will created that
contains the actual data as workload and additional meta information, so called attributes.
Before the document enters the first pipeline stage, the system assigns an unique id
document, a so called ticket, which allows its identification within the pipeline.
to the
The document will be processed and altered by the different pipeline stages
. Babeldoc
provides a multiplicity of pipeline stages. Even the use of JavaScript within a pipeline stage is
possible in order to gain the highest flexibility possible.
After the pipeline processing, the resulting document is sent to external target systems
a database or a SMTP server.
like
It is a little strange that the message sinks that link to the external target applications are
integrated into the pipeline whereas the message sources are separate processes outside the
pipeline.
Journal
All pipeline processing information about a processed document are stored in the journal .
–
After the document processing of a pipeline stages, the journal assigns a new ticket step
a combination of the document id and a pipeline stage id – to the document and determines
that way the pipeline stage that will process the document next.
It is also possible to store document as it looks like at certain pipeline stages in the journal.
This can especially during the setup of a new pipeline be very helpful for debugging
purposes.
All journal information can be stored either in the file system or in a database . This allows
persistence of document processing, which allows to continue the document processing e.g.
after a power outage at the same pipeline stage it has been interrupted before. It is also
possible to manually reefed a document from the journal to any pipeline stage. E.g. if a
processing error occurred.
The error handling itself is unfortunately quite weak as it just allows to define if the
processing of a document should go on or not in case of a processing error. Advanced
features like a mechanism that allows to store erroneous messages to a database or at leas to
send an email notification of an administrator, are missing.
Runtime environments
Babeldoc is flexible so that it can run standalone, in a web container or in a J2EE container
(currently tested on Jboss 2.4.x and JBoss 3.0.x).
CRP Henri Tudor
Page 48/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
The system can be run synchronously what leads to a serial processing of all documents. For
higher performance requirements the system can also be run asynchronously, which allows
the parallel processing of multiple documents. In this mode it is also possible to a threadpool
to increase the performance even more.
Features
Babeldoc features connectors for the most common protocols and channels like JMS, SMTP,
HTTP, databases, FTP, files, sockets and SOAP.
For the active polling of external sources, Babeldoc provides scanners that examine the
interfaces for new messages and feed them to a pipeline. Scanners are available for files, mail,
FTP, databases and HTTP.
For the actual document processing Babeldoc provides a comparably huge collection of
predefined message transformation and modification modules. The span reaches from the
transformation of text messages to the XML format – that by the way supports fixed length
and multi-level delimited messages – over the use of the Velocity template engine up to the
generation of RSS channels. Even the generation of SVG images and FOP documents is out
of the box possible.
Similar to JyRetic, Babeldoc also works with metadata that can be dynamically attached to
documents and can be used to e.g. influence the configuration and behaviour of pipeline
stages.
For occasions for which no predefined pipeline stage exists, an additional pipeline stage
comes into play that allows the use of JavaScript to define a business logic that corresponds
to the users need. Besides JavaScript, the obligatory, powerful XSL transformation is possible
as well.
Routing, within a pipeline or to a different pipeline, can be either predefined or dynamically,
depending on the message content or the metadata of the document. Transactions are
supported via the journal, which also features a replay option that allows to reprocess a
document.
Message encryption support including digital signing seems to be available. At least Babeldoc
provides pipeline stages to cipher and sign a message but their use is nowhere documented.
The use of encrypted communication channels is not yet implemented, which hampers the use
for sensitive data and in insecure environment.
Support for the compression and decompression of messages is available, which is especially
useful for the processing of larger data amounts like graphics or even film footage. Also
exists a pipeline stage that allows to add a document content to an existing zip archive.
The configuration of the components can be accomplished in java properties or XML style. It
can be complicated and confusing to configure a pipeline because of the many different
configuration files that have to be used and that are not always logically separated. Please
consult the “Test schema” paragraph further below to learn more about this issue.
Support
The documentation comprises a User Guide, a Developer Guide and a White Paper. The
documents are well structured but incomplete. There exists a user and developers guide in a
pseudo XHTML format which is just viewable in the xml representation. Obviously has
Babeldoc a build in pipeline that should be able to generate a viewable, well formatted
document out of these files. Unfortunately this pipeline neither works nor is it mentioned
anywhere.
CRP Henri Tudor
Page 49/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Very important issues like detailed information about the available pipeline stages, scanners
and their parameters are completely missing and have to be gathered as far as possible from
the examples. Fortunately Babeldoc features a lot of examples regarding the configuration of
pipelines and scanners. The explanation in the readme files is very minimalistic but the
examples are usually self explaining and thus the best entry point for the creation of own
pipelines.
The only available additional support are the forums on the sourceforge site of Babeldoc.
They contain some helpful information about the obstacles and “think-abouts” of the system
and it is possible to gain help from other users and even the developers. The only drawback
here is that they are not very frequented recently.
Usability
Trying to ease the life, Babeldoc provides a multiplicity of graphical tools to create a new
project or to configure and control pipelines and scanners.
Figure 6 Babeldoc Pipeline configurator
This seems at the first glance very ideal but the configuration code generated by these tool is
incomplete and some parameters configured in the frontends do not appear at all in the
configuration. This results in not working components. The structure of the generated
configuration is furthermore random. This makes it hard to complete or change it by hand
afterwards.
The frontends are started as a parameter when the Babeldoc core engine is executed. This is
mentioned nowhere in the documentation. Finally, it is not comprehendible why seven
different frontends are existing that have do be started all separately. Several of these
frontends are redundant or performing work at the same component. It would have been more
reasonable to provide one frontend that allows to configure and control the components.
For the viewing and control of the journal provides Babeldoc an additional frontend:
CRP Henri Tudor
Page 50/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Figure 7 Babeldoc journal viewer
This frontend allows to view the different processing steps of a message and also enables the
user to view a stored message or feed it back to the pipeline. The message can just be fed
back to the begin of the pipeline. The feed to a certain pipeline stage has to be triggered from
the command line. If a message is viewed, the journal viewer displays its attributes and the
message content. As the message content is displayed as cryptic figures, this is less helpful to
view the message structure at a certain pipeline stage.
Test schema
Babeldoc provides neither a TCP/IP connector nor the possibility of message recomposition.
Thus the schema had to be cut down on simple processing of a message coming from the file
system. The remaining parts of the test schema could be realized by the means of Babeldoc.
Babeldoc features two different approaches for the schema definition, property based and
XML. As XML is widely used as a configuration standard and can be imported by many tools
and applications, this variant was chosen for the configuration of the test schema.
In order to configure a test schema, several configuration files have to be created:
• Scanner configuration
• Pipeline configuration
• Pipeline definition
• Flat file to XML definition
• XSLT transformation style sheets
Even if XML has been chosen for the test schema, some of the configuration files had to be
created in property style others had to be always in XML style. Besides that, this multiplicity
of configuration files can be quite confusing at the beginning, especiall, as some of them seem
to be unnecessary. It is not obvious why a pipeline needs besides its definition file also a
configuration file that just describes the pipeline type (simple or XML). Also, the definition
of polling sources is done in separate files (scanner configuration) whereas the sinks are
defined within the pipeline.
After the start of the schema, Babeldoc indicated an error during the message processing at a
certain pipeline stage. Unfortunately it didn’t provide any useful error message – neither in
the log file nor in the journal – that would help to track down the cause of the problem.
CRP Henri Tudor
Page 51/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Thus the tester had to implement the same configuration in property style which run
flawlessly. Obviously Babeldoc still has some problems with the XML-representation of
configuration files.
Conclusion
Without question, the main advantage of Babeldoc is its huge library of pipeline stages. That
way, the requirements of the most scenarios can be quickly fulfilled out of the box. The
project contains an impressive number of connectors and transformer including FOP and
SVG.
The possibility to use, besides XSLT, JavaScript extends the application possibilities for
exotic and complex message modifications requirements.
TheJournal is as well a nice concept for pipeline control and tracking and a means that allows
persistence during the document processing.
On the other hand, the architecture also has some inconsistencies. There is a distinction
between scanners (which are source connectors) and pipeline stages, but there is no
distinction between sink connectors and pipeline stages. Moreover, regarding routers as
normal pipeline stages results in some odd configuration entries.
The documentation is incomplete, which states a major obstacle for potential users. There is
virtually no information about the tools that come with Babeldoc. Also to other, even more
important facets, like the available scanners and pipeline stages, are not paid regard in the
documentation.
There documentation for developers is little useful. The majority of the needed information
have to be extracted from the source code. This bears the risk to the scare potential
contributors. The only way to gain support are the forums that are very low frequented.
CRP Henri Tudor
Page 52/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
3.3.2 JyRetic
JyRetic is an EAI Server that has been significantly inspired by the OpenAdaptor project,
which is decribed under section 3.3.4 at page 67. Thus the architecture and the naming of the
components are quite similar. The goal of the JyRetic project is to create a system with the
proven architecture of OpenAdaptor but which is easier to use than the model system.
The project started under the name Retic and was initially developed in Python. Unfortunately
Python lacks connectivity with databases and MOMs. In order to be able to provide as well
this often needed connectivity, Retic was translated from Python to Jython and relabelled as
JyRetic.
Jython is an implementation of the high-level, dynamic, object-oriented language Python
written in 100% Pure Java,, and seamlessly integrated with the Java platform. Jython is
provided in the release of JyRetic. So all that is needed is Java 1.3 or higher.
Due to the lack of resources, the development of the Python-based Retic version had
officially been stopped.
Architecture
As OpenAdaptor has served as model for JyRetic, the architecture is similar:
• Adaptor
A one way link between one origin and one or more destinations
• Source
This component fetches the message from the delivering external system or a messaging
system that delivers a message from another adaptor.
• Pipe
This component modifies the message data
• Sink
This component delivers the message to the receiving external system or a messaging
system that interconnects adaptors in order to further process the message by another
adaptor.
In addition to the primary components listened above, JyRetic provides some optional
components that not directly affect the message processing but are nevertheless quite helpful:
• Metadata dictionary
allows the exchange of meta information between different components and the dynamic
component configuration.
• Preprocessor
executes only once during adaptor execution, before polling begins. This component can
be used for adaptor initialization.
• Postprocessor
executes only once after all polls have terminated
• Logger
enable local and remote logging for an adaptor
CRP Henri Tudor
Page 53/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Adaptors are tree-like structures that could be pictured this way:
Figure 8 JyRetic adaptor structure example
The complete logic and all components are contained in a so called adaptor. The Adaptor has
a nesting structure which corresponds to a tree structure as shown in the sample structure in
Figure 8. It is possible to attach multiple sinks at every stage of the adaptor. Every think that
is attached to a state, receives the currently processed message at this point. This mechanism
allows a basic, restricted form of static routing but no dynamic routing depending on message
contents or any other conditions. As the architecture is similar to OpenAdaptor, it has the
same pitfall of unidirectional messaging. This results into the inability of the support of
systems that use connection based messages that require an acknowledgement like HL7 or
DICOM which are the two most widespread protocols in the healthcare sector.
Message
JyRetic does not define a certain message format or provides certain message containers. But
it features several possibilities to transform a message coming from an external system to and
from the XML-format. As to message mapping and the metadata dictionary access also
requires a XML-formatted message, this form of representation is recommended.
Metadata dictionary
Information coming from messages can be extracted and stored in a so called metadata
dictionary that acts as a global information repository. These stored information can be used
by other components of the adaptor. Moreover, this mechanism also allows the dynamic
configuration of components. Such an scenario could be an email address that is extracted
from a message and afterwards stored in the metadata dictionary. Later on as the message
reaches an email sink, the email address can be fetched from the metadata dictionary and
dynamically be set as the recipient address in the sink configuration.
Pre- / Postprocessors
Pre- and postprocessors do not process any message content but can be used to initialize or
finalize the adaptor before the source polling starts, respectively after adaptor execution,
when all polls are terminated. These components are also able to access the metadata
dictionary.
Through the use of XMLRPC services, a distributed system canc be set up and it is possible
to start an adaptor instance on a remote system. Therefore its XML-specification is sent to the
remote instance as a JMS message.
CRP Henri Tudor
Page 54/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Logging
Local logging with rotating log files as well as remote logging via Jabber, socket or email is
possible.
Features
One of the most important considerations of an EAI system is its connectivity. JyRetic covers
with the support of flat files, FTP, HTTP, SQL, SMTP, SOAP and different messaging
systems like JMS, XMLBlaster or Jabber the majority of the usually needed interfaces. In
addition to that it features advanced connectors like the tree-like representation of related
SQL requests that can as well be placed on different databases. Last but not least it also
supports the XML-database Xindice of the Apache project.
Even if this interface list should already meet the majority of usual requirements, some
additional interfaces like a email source and interfaces for a simple socket connection would
still increase the pleasure.
Besides the interfaces themselves, the system comes also with a variety of pipelines for the
message processing and modification. Flat message strings can be transformed to XML and
back, the XML structures can be accessed, altered and copied to the metadata repository.
The generation of different file formats from message contents like Excel sheets, Postscript
and PDF are supported as well. For messages with a large workload exists compression
support. These messages can be compressed or decompressed by the use of the ZIP algorithm.
On the security side exists still a lot of space for optimization. Unfortunately, so far does not
exist any support for encryption of message data or communication channels. This prevents
the application of JyRetic - especially as distributed system - in insecure environments and
with sensitive data. This circumstance is even more emphasized through the absence of
transaction support.
The configuration of the system is done via an XML file that holds all configuration
parameters of an adaptor and its components. It is possible to define variables as
configuration values. The values for these variables can be stored in a separate parameter file.
This mechanism allows to start the system with different parameter files that reflect different
environments like development, testing or production in case of a staged system.
The second option of dynamic configuration that can even depend on the particular message
contents is the use of variables coming from the metadata dictionary. This mechanism is
further described under the paragraph “Architecture” of this section.
The error handling is not that sophisticated. If an error occurs during message processing, the
message can be saved to a configurable path & an error message can be sent to an
administrator if the SMTP-logger is enabled. The possibility to remotely view and modify the
erroneous message or even feed the altered message back to the adaptor does not exist.
Support
The web site contains several HTML pages, which shortly but clearly describe the main
concepts of JyRetic, its components and their configuration. A detailed description is often
missing, incomplete or obsolete. Especially the non-existent API-documentation could
prevent JyRetic from gaining external contributors. The documentation for the Retic
administrator tool, is as well out of date but a set of flash animations show descriptively the
main functionalities of the tool and their application.
CRP Henri Tudor
Page 55/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
The sourceforge site hosts two forums, one for support and one for open discussions, which
contain nearly no postings. Mailing lists do not exist but the contact address of the main
developer is provided on the website.
A particularity are the five RSS feeds that deliver different information from project news
over release info up to documentation. Unfortunately these feeds do not seem to be
maintained anymore.
Usability
JyRetic comes with a pretty configuration, administration and monitoring interface called
Retic Administrator. Through a XMLRPC interface the frontend is able to remotely
communicate and control adaptors. The configuration of the adaptors is very detailed and
clear. Components can be chosen from select boxes and added by buttons with graphical
symbols. The different sections like configuration, monitoring and administration are
separated by panels.
Figure 9 JyRetic configuration and administration frontend
This results into a very high and intuitive usability of this tool. This is as well crucial, because
the frontend lacks of documentation or any other kind of support like hints or a help section.
The documentation that comes with JyRetic is outdated and covers just a tiny part of the
features. There are some Flash animations at the website that show some of the major tasks
which can be accomplished by this tool.
Alone the XSL-stylesheet definition for the message transformation and mapping and the start
or shut down of a server instance can not be managed by the GUI. A XSL-stylesheet
generator and validator for the mapping or transformation of messages would be a very handy
extension of the frontend.
CRP Henri Tudor
Page 56/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Nevertheless, with Retic Administrator, JyRetic provides the most advanced graphical
frontend of the tested EAI-Systems. This tool fulfils nearly every requirements toward such a
tool in a comfortable way.
Test schema
Like the huge majority of the tested systems, JyRetic does not support recomposition. Thus
the test scenario had to be altered. Both messages (System A and System B) have been joined
to one delimited message that was fetched by a file source.
Thanks to the graphical frontend, the creation of the schema was very comfortable and easy to
accomplish.
The absolute contrary to that was the effort to start and test the generated schema. The
attempt to start the adaptor via the frontend led to a connection refused error without further
explanations, neither in the frontend nor on the website. The start of the adaptor via command
line was also not as easy as described in the documentation. Before the system was able to
start anything, the start scripts had to be heavily altered. The Jython start script used a fixed
path for java runtime environment and the paths for the required java libraries were wrong
and incomplete. The creation of an install script would drastically lower the entry barrier for
potential users and developers.
Some smaller issues can also become a big obstacle if it comes to running the schema. One is
the proper use of the crucial pipes which convert a flat string to XML and the other way
round. For the transformation from XML to a flat string, one or more ASCII characters have
to be set as delimiters. For the transformation from a flat string (e.g. CSV) to XML, a
delimiter has to be defined by setting the numeric value for the wanted ASCII character. This
particularity is mentioned nowhere and leads to strange but not helpful error messages at
runtime.
If the particularities are figured out and the system configuration is adjusted, the adaptor
works stable and fast.
Conclusion
The architecture of JeRetic is very clear and simple. So is the structure of the configuration
files. The Retic Adminstration tool further simplifies the generation and management of
adaptors. The system comes with a notable number of components that should be sufficient in
the most cases. The available documentation is well structured and fosters a quick adaptation
process.
JyRetic is based on Jython. As this is not a widespread coding language, it can be hard to
write own components and to find contributors. The missing API and developer
documentation intensify this effect even more. An installation package would notably lower
the entry barrier as it is not possible to run the system using the scripts it is coming with.
The second weak point is the security as the application in its current state does not support
any security features starting from transaction support up to the encryption of messages or
communication channels.
Finally, due to the similar architecture to OpenAdaptor, the communication through the
adaptors is only unidirectional. This prevents the implementation of acknowledgement
orientated protocols.
Nevertheless, JyRetic is one of the most mature EAI systems on the Open Source market.
Besides the view issues described above it is quite quickly and easily possible to establish a
working integration schema. This is especially enabled through the clear architecture, the
intuitive configuration frontend and the availability of many useful sources and sinks.
CRP Henri Tudor
Page 57/112
Project Freegate: Market Survey of Open Source EAI Software
CRP Henri Tudor
Authors. Oechsle, Donak
Date: September, 29th, 2006
Page 58/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
3.3.3 Mule
Mule is an Enterprise Service Bus (ESB) messaging framework with the goal to provide a
unified method of interacting with data from disparate sources through a transparent data and
protocol handling.
Mule was designed around the Enterprise Service Bus (ESB) architecture, which stipulates
that different components or applications communicate through a common messaging bus,
usually implemented using JMS or some other messaging server. Mule goes a lot further by
abstracting JMS and any other transport technology away from the business objects used to
receive messages from the bus.
The system is java-based and thus can be deployed on any operating system that provides
support for JDK 1.4.
Architecture
The primary goal of Mule is to enable integration between applications using standards, open
protocols and well-defined patterns. To achieve this goal, Mule implements the architecture
and terminology described in the book “Enterprise Integration Patterns” by Gregor Hohpe.
Figure 10 Mule architecture
•
Mule manager
It handles and coordinates the different components of the Mule EAI system (see
Figure 11 and Figure 12) which are used to control the message flow and to process
the messages.
•
Mule model
The SEDA-based model is the container in which the components are managed and
executed. It controls message flow between the components, manages threading,
lifecycle and pooling.
•
UMO component
Universal Message Objects (UMO) are the business objects of the mule system. They
are standard JavaBeans that execute business logic on incoming messages. Routing
and transformation of events to and from UMOs are handled transparently based on
the component’s configuration.
CRP Henri Tudor
Page 59/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
•
Endpoint
Endpoints define communication channels between two or more components,
applications or repositories. They allow the Mule objects to talk over any protocol in
a unified way.
•
External application
External applications can be anything from application servers to legacy payroll
systems, to mainframe trading applications or a client application.
The Mule model defines a set of components that are used to perform the major part of the
work necessary to make disparate applications and services communicating.
Figure 11 Mule architecture detailed
Stages
The following schema explains the different involved components and stages more detailed:
Figure 12 Mayor Mule components & stages
Figure 12 shows the main components within a Mule schema and their chronological order.
1
Endpoint
As explained above.
2
Router
Routers control the flow of messages between components and can re-sequence,
aggregate or filter incoming messages.
CRP Henri Tudor
Page 60/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
3
Interceptor
Interceptors are used to intercept message flow into a service component. They are very
helpful to trigger events or interrupt the flow of a message. They can in example be used
for security features to ensure that the current request has the correct credentials to
invoke the service or to monitor the message flow.
4
Transformer
Transformers are used to transform the messages from the format of the external systems
that are attached to the EAI to a format that is needed by the internal Service components
(UMO) of the Mule system and visa versa.
5
Service invocation
The service is the business logic. The business logic itself is always encapsulated into a
Universal Message Object (UMO) as described in the paragraph above.
Communication
A mule application is intended to consist of many mule instances across the network whereas
each instance is a light-weight container. Every containers host one or more UMO component
that are connected through endpoints either to external applications or other UMOs.
Figure 13 Schematic example of a Mule configuration
The architecture of Mule claims to be highly scalable, using ideas from the staged eventdriven architecture (SEDA) design pattern.
SEDA is intended to support massive concurrency demands and simplify the construction of
well-conditioned services. In SEDA, applications consist of a network of event-driven stages
connected by explicit queues. This architecture allows services to be well-conditioned to load,
preventing resources from being overcommitted when demand exceeds service capacity.
Event processing can thus be performed asynchronously according to the SEDA design
pattern as shown in Figure 14.
Figure 14 Asynchronous event processing
CRP Henri Tudor
Page 61/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
A synchronous way of event processing is optionally also available:
Figure 15 Synchronous event processing
The connectors extend messages fetched from a external system with meta information. These
meta information contain entries like the message type, message origin or the file name in
case of a fetched file. The message itself will be unaltered attached as workload. A negative
side effect of this approach is missing ability to access or validate the message structure. The
transformation into an uniform format like XML or a Java container would make things easier
here.
Features
Mule endpoints are in principle bidirectional. Thus it must not be differed between sending
and receiving endpoints. A large number of connectors for the interaction with the most
common protocols are provided:
• Flat files
enables the reading and writing of binary and text files from the file system.
• Socket
different socket-based protocols like TCP, UDP, IP multicast, streams as well as mail
protocols like SMTP, IMAP, POP3 and web protocols like HTTP, FTP, HTTP, SOAP,
WSDL are supported.
• Database
access to relational databases through JDBC.
• RMI
support of remote method invocation over JRMP.
• Messaging
JMS v1.02b & v1.1, Jabber (XMPP)
• Other
servlet provider to enable the system to send and listen for servlet requests, EJB
connector to allow EJB invocation and Intra VM connector for the communication
between components running in the same virtual machine.
Besides these generic protocol connectors exist some specific application connectors
• AS400 data queue
for synchronous or asynchronous communication with AS400 RPGs.
• Quartz
a chron like free software based scheduling application.
Mule provides a variety of means to secure the information exchange between the attached
systems. It provides a security manager that allows, in combination with the interceptors (see
Figure 12), the authentication of requests. Even a method-level authentication for single
UMOs can be configured. The current security implementation supports
• JAAS
Java Authentication and Authorization Service
CRP Henri Tudor
Page 62/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
• LDAP
Lightweight Database Access Protocol
• CAS
Central Authentication Server
• DAO
Data Access Objects
Furthermore it provides different encryption algorithms for the communication channels like
• SSL
• TLS
• HTTPS
and PGP for the encryption of the transferred data itself.
For the internal processing, the messages will be enriched with meta information like message
type, message origin and message specific information like the file name of a message
coming from a file connector. Unfortunately the message itself will just be added as workload
in its raw format. This circumstance avoids a comfortable access to the different message
field. Parsing the message into a XML structure or nested JavaBeans would have been more
feasible. For bandwidth reduction, the messages can be compressed by the GZIP algorithm.
Another drawback of the missing capability to parse a message into a message container like
XML is impossibility to map a message from one format to another or to change or enrich the
message content through configuration.
Indeed Mule provides the possibilities to alter XML messages by XSL transformers as well as
the transformation of XML files to Java objects and visa versa. But the possibility of parsing
a delimited or “fixed length field” into a XML structure or Java object is missing so far.
Figure 16 Transformer chaining
The existing transformers can be freely chained up (e.g. like shown in Figure 16) to provide
the highest possible flexibility during message transformation.
Mule realizes the error handling trough so called exception strategies which are defined in the
configuration file of a Mule instance. Exception strategies are used to handle exception
conditions when an error occurs processing an event.
Figure 17 Mule exception strategies
Exception strategies can be applied at three points:
CRP Henri Tudor
Page 63/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
• Connectors
handles exceptions thrown during sending or receiving messages
• Components
handles exceptions during the execution of the business logic of a component
• Model
the default exception strategy for the whole model in case of exceptions during the
business logic execution
In terms of the exception strategies, the exceptions and also the messages that caused the
exception will be send to an error queue for further processing.
Mule's transaction framework support different transaction types
• JDBC
• XA
• JMS
• Message acknowledgment
All transaction are handled the same way. Endpoint can be configured to start a new
transaction or join an existing one.
The system is configured through a XML file. This configuration file contains all information
regarding the configuration of the involved elements and their interaction. Thus the
configuration can become very complex. Furthermore for a distributed system, a separate
configuration file for every mule instance has to be created. Thus it can become hard to
identify the general information flow between the involved components. A means for the
central configuration of all involved instances would be helpful to gain the required overview
about the dependencies and workflows.
Mule doesn’t provide any graphical interface for Administration and monitoring of the
involved components. But it provides a JMX interface that can be used in combination with a
Mbean-server to locally or remotely perform the following tasks:
• View the configuration state of the MuleManager
• Stop and start the Mule instance
• Stop and start the model
• Stop, start, pause and resume components
• Query event processing and endpoint routing stats on individual components
• Query event processing and endpoint routing stats for the whole server instance
Support
The documentation comprises a
• User Guide with examples,
• Architecture Guide
• Programmers guide
• Javadoc of the Mule API
• Configuration Reference
• Cookbook with examples
Besides that it provides a link list to background information about the underlying
technologies.
CRP Henri Tudor
Page 64/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
The documentation is structured and features many examples but often it is hard to find
needed information concerning a certain issue. Furthermore some parts of the documentation
are incomplete and just marked as “to do”.
The website provides several mailing lists for developers, users and announcements of new
features or mule versions. These mailing lists are quite frequented and help in case of
problems is usually provided fast.
Even faster help and realtime exchange can be accomplished through the Mule IRC channel
that allows the direct contact with the developers and other users.
Finally, the website provides a very structured bug tracker that shows detected bugs of the
particular Mule elements and their status. In addition to that it features several test cases for
the reproduction of bugs.
Professional support is offered by SymphonySoft, the main developing company, located in
the United Kingdom and Malta.
Usability
Mule provides a rudimentary tool for the configuration and start of mule configuration files.
Figure 18 Mule IDE
This application is still in an early state. During the tests it just could be used to assign an
existing configuration to a mule instance, configure the start parameters and start the instance.
Furthermore exists a tool called “Config Graph” that visualizes a mule configuration and
eases the understanding of the component dependencies and interactions. Unfortunately this
tool currently just supports single instances and does not show the dependencies amongst
distributed Mule systems.
As mentioned before, Mule doesn’t provide any graphical interface for Administration and
monitoring of the involved components. Through the JMX interface although, it is possible to
connect a MBean server to the mule instance. This approach allows the control of the
component, the monitoring of the instance and the generation of statistics.
Test schema
The whole test schema could be realized with Mule. At the beginning it was hard to master
the configuration because of its quite complex and not always clear structure. For example the
transformers that can be configured for inbound and outbound endpoint can either be
explicitly defined or directly be set within the endpoint URI.
CRP Henri Tudor
Page 65/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
The mapping logic of the schema had to be coded in Java by hand. This had been complicated
trough the absence of message parsers. Parsers split the incoming messages into their
elements and allow an easy access to these message elements. Without this capability the
business logic for message parsing has to be implemented by hand for every UMO. This can
fastly become nontrivial as the message structure becomes more complex.
Besides these issues the message processing including the configured polling worked fast and
flawlessly.
Conclusion
The Mule architecture is based on a sound theoretical background and quite open structured.
This allows to add missing features and connectors quite easily. Besides that possibility Mule
already provides a large variety of connectors, which include all major protocols.
Because of its architecture, the system is highly scalable and distributable. This assures the
availability if the needs in terms of performance and reliability are growing.
On the down side are the missing message parsers and containers that would ease the access
to the message elements and would enable the ability to validate the message structure.
Furthermore is the configuration file a little confusing because of its complex structure and
the amount of involved elements. A usable graphical frontend would be helpful to increase
the usability at this point. Also the documentation is structured but sometimes confusing,
sometimes incomplete. Restructuring and completion would lower this obstacle.
From the technical point of view, Mule represents a mature system with lots of features,
connectivity and scalability. In terms of usability the system still has a lot of optimization
potential, especially in terms of configuration and error management.
CRP Henri Tudor
Page 66/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
3.3.4 openadaptor
The openadaptor framework is developed and used by the “Dresdner Bank”, a major German
bank. It is a Java/XML-based software platform which targets a rapid business system
integration with little or no custom programming. It claims to be highly extensible and
provides already many ready-built interface components.
The framework is java-based and can thus be deployed on any operating systems that
provides at least a JDK 1.2 implementation although the use of JDK 1.4 is highly
recommended.
Architecture
Openadaptor comes with a framework that provides out of the box numerous beneficial
functionalities like :
•
•
•
•
•
Error Logging and Notification
Process Management and Monitoring
Exception/Repair Queues
Message Compression and Security
Benchmarking and Regression Testing
Figure 19 OpenAdaptor Structure
The architecture and terminology of openadaptor are pleasantly simple. The terminology
comprises the terms adaptor, source, sink, and pipe:
•
Adaptor
A one way link between one or more origins and one or more destinations
•
Source
This component fetches the message from the delivering external system or a
messaging system that delivers a message from another adaptor.
CRP Henri Tudor
Page 67/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
•
Pipe
This component modifies the message data
•
Sink
This component delivers the message to the receiving external system or a messaging
system that interconnects adaptors in order to further process the message by another
adaptor.
Every adaptor consists of at least one source and one sink. Pipe elements are optional and not
always needed as the remaining components are as well able to do minor message formatting.
An adaptor can contain an unlimited number of all components.
DataObject
If a source component of an adaptor receives a message from an external system, the message
will be transformed into a so called DataObject. A DataObject is a XML-structure that
describes the message structure, the naming of the fields and their cardinality.
DataObjects are the fundamental data structure that is internally used by the adaptors to
access an alter the messages. The DataObject structures can be nested by arrays of other
DataObjects in order to build up more complex message structures.
The advantage of this methodology is the easy access and modification of the message
elements.
Example
Figure 20 Openadaptor configuration example
The sample system consists of one source and two sinks. The messages are fetched over a
JDBC connector from a Sybase database. After the conversion to the data object format, the
messages are distributed to two separate branches.
The first branch starts with a pipe that performs conversion operations on the message (e.g.
field transformation, mapping to a different format or enrichment with additional fields). The
result is sent to a JMS-queue via a JMS-sink.
The second branch consists just of a file sink that writes the message to a text file on the file
system.
CRP Henri Tudor
Page 68/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Controller
The controller fulfils three main tasks:
• Start of the source component threads
• Coordination of the communication between the components
• Management of the transactions
Figure 21 Functional schema of the openadaptor controller
Each component runs in a separate thread. The component threads are started by the
controller after they have been initialized.
The source component fetches the messages from an attached external system (whether this is
based on polling, listening or call-backs). Then it requests the next available transaction from
the controller.
Afterwards, the source component passes the message to the controller. The controller in turn
passes the message to the next component that has been configured in the configuration file of
the adaptor. After this component has modified the message, it sends it back to the controller,
which forwards it to the next component until the message reaches a sink component. After
the transformation to the needed protocol, the sink component sends it to an external system
or a queuing system.
The message forwarding within the adaptor is done by a synchronous, local method
invocation that will eventually return to the source, if the message is successfully processed.
Otherwise an exception will be thrown.
If the source component receives an exception it will rollback the transaction, otherwise it
will commit the transaction. The controller is responsible for propagating calls to begin,
commit and rollback transactions.
Unfortunately the system accomplishes only one transaction at a time. That leads to the effect
that if one source component begins a transaction and a second source component attempts to
begin as well a transaction, the second source component will be blocked until the first one
commits or rolls back its transaction.
CRP Henri Tudor
Page 69/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Features
Openadaptor provides sources and sinks for the interaction with the most common protocols:
• Flat files
support of delimited files, fixed width formatted files, file reading from URLs and
reading of the openadaptor specific DataObject XML format
• Sockets
support of the FTP, SOAP, MAIL, LDAP and generic socket connections including
multithreading. Message splitting is supported as described under “Flat Files”
• JDBC
specific support for Sybase, Microsoft SQL Server, Oracle, Informix, MySQL, MSAccess and MS-Excel
• RMI
either provides a RMI service or registers to an existing one
• Messaging
JMS, Jabba instant messaging
Furthermore sources and sinks for the interaction with specific middleware products of
• TIBCO
for communication with the TIBCO Rendezvous system
• MQ Series
a queue-based middleware product of IBM
are supported. These special components ease the interaction with well established
commercial systems that can often be found in the integration environment.
In addition to the sources and sinks, which are already providing some functionality for
changing the message content, openadaptor provides pipes for the mapping and modification
of messages. Besides the possibility of coding own pipeline components, the following two
alternatives are available:
•
Attribute mapping
Java property like configuration of the affected fields and the activities upon them.
•
XSLT
As the internal representation of the messages is a XML format, a XSL style sheet can
be used to transform and modify the message contents.
The framework also provides means to assure the privacy of sensitive information during the
transfer through unsecured networks. Digesting, encryption and digital signing of message
data is supported by the use of the Java Cryptography Extension (JCE). Thus, all encryption
variants provided by this framework are also available for message encryption under
openadaptor.
For the internal processing, messages will be transferred into DataObjects, an ASCII based
XML representation of the messages. This can result into big messages, especially if an
binary message has to be ASCII encoded, e.g. by the use of the base64 algorithm. In order to
limit the required bandwidth the message can be compressed by the ZIP algorithm.
Openadaptor provides a framework for the handling of erroneous messages - the so called
Message Hospitals. An openadaptor Message Hospital is an interface to a repository, which
holds messages that could not be processed by an adaptor component.
CRP Henri Tudor
Page 70/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
It is important to note that there is no single central Message Hospital - each project must
deploy its own Message hospitals. Openadaptor simply provides the framework that allows to
implement a hospital for the user’s messages.
Figure 22 Openadaptor error handling example
Adaptors can be configured to send messages to a hospital, by inserting a HospitalPipe into
the component chain.
In case of an error occurring during the message processing as shown in C3 of Figure 22, the
raised exception will be escalated to the preceding components until a component is able to
handle the error.
If no component is able to do so, it finally reaches a source component (C1) and the
transaction will be rolled back.
If a hospital pipe has been included into the process it will catch the exception and create a
patient message. This patient message includes the message that caused the exception and
additional meta information like the reason and the source of the exception.
The patient message will be delivered to the Message Hospital database where it will be
stored for further processing. After modification, it can be fed back to the process.
The system also provides a tracking mechanism that stores information about the processed
messages including the detection of duplicate messages. In addition to that, as well
benchmarking components are available that allow to measure the processing efficiency. This
helps to find performance bottlenecks of the configuration.
Every adaptor is configured by java properties like or alternatively a XML configuration file
that defines the behaviour of the adaptors component and the structure of the adaptor. All
components can be controlled and monitored over a command line interface that allows the
use of scripting and automated startup and shutdown of adaptors. Alternatively exists a
remote monitoring and logging interface that allows to control the system via HTTP or RMI.
Support
The documentation comprises the
• White paper,
• Programmers guide,
• FAQ,
• DataObjects tutorial,
• Use Case description and the
• Javadocs of the openadaptor API.
CRP Henri Tudor
Page 71/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
The programmers guide is well structured and quite detailed. On the downside it is not up to
date and some information are missing. In example the configuration by XML files is
mentioned but not explained and the possibility of XSLT transformations is not mentioned at
all.
The distribution includes a cookbook directory with many sample configuration files. These
examples can help the user to work himself into the material. The only blemish is the fact that
they are neither commented, nor described elsewhere.
The openadaptor community provides a frequently visited forum and six different mailing
lists for different topics concerning users and developers. The response times to both are
usually quite short.
The search function of the web page is simple but works well and presents the search results
clearly arranged and separated by forum topics, mailing list messages, HTML pages and bug
tracker issues.
Professional training, consulting or support for openadaptor couldn’t be found to be provided
by any company.
Usability
The Adaptor Framework Editor is a GUI editor simplifies the whole process of constructing a
properties file and running an adaptor.
Figure 23 The Adaptor Framework Editor
The Adaptor Framework Editor covers all supported openadaptor components. The
components are separated by Sources, Pipelines and Sinks. In addition to that, the
components are categorized (e.g. encryption, XML, mail, ftp). The GUI displays the usable
elements at the left hand side of the window in an explorer style.
The remaining part is cut into a graphical representation of the configured schema on the
upper half and a list of the configurable parameters of the involved components divided by
tabs on the lower half of the window.
Tooltips with a short description of each component and property ease the understanding. In
addition to that, a detailed html help that is actually the same as the openadaptors
programmers guide, supports the user with the configuration of the schema.
CRP Henri Tudor
Page 72/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
The GUI uses text based configuration files in order to make it simple to add descriptions of
new components including user custom components. Unfortunately these comments will not
be preserved if the properties will be opened with the editor after the modification.
More meaningful are the validation checks with visual feedback that the editor performs if the
user likes to start or save the configuration. This feature clearly indicates the mandatory
parameter that still have to be configured in order to successfully run the configured schema.
Figure 24 The HAT message management frontend
The Hospital Administration Tool (HAT) is a graphical user interface to manage openadaptor
DataObjects, which have caused an exception as they passed through an Adaptor and have
therefore been rejected and collected in a data sink called "the hospital". The HAT provides a
means of viewing these "failed" messages (Patients) and, depending on the security
privileges, modify the attributes/structure that caused the problems in the first place.
Alternatively, Patients can be simply deleted from the hospital. The HAT comes as an
independent standalone application with a swing GUI.
Test Schema
The major part of the test schema could be realized with opadaptor. The composition of two
different message types, coming from two different systems, had to be left out because it was
not supported by the framework and it’s mapping approach. Thus just one source was used
that picked up already merged messages from flat files.
The tester has been unable to establish the polling for input files as the FileSource component
does not support polling. If the input file did not exist, the application terminated with an
error. If an input file could be found, it is read once and OpenAdaptor terminates. There are
more sophisticated file reader components that allow the polling of a directory. But these
could not be properly combined with the input readers for delimited strings that is needed to
parse the messages.
Besides these issues the test schema could be implemented without major issues.
Conclusion
CRP Henri Tudor
Page 73/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Due to the queue concept of openadaptor, a synchronous message processing is not possible.
Furthermore omits the unidirectional concept the bidirectional communication between
attached systems.
This is needed for certain protocols like HL7 or DICOM, which are the most used protocols
in the healthcare sector. This kind of protocols needs to establish a TCP/IP connection
between the communicating partners and to exchange a message and a response through the
same channel. This kind of communication is so far not possible in this framework.
The documentation is not up to date as at the time of testing, openadaptor version 1.7.1 has
been out but the documentation was still responding to version 1.7.0.
The file connectors miss needed functionalities like renaming, moving or removing a file,
coming from a file source, after it has been processed. During the tests it was not possible to
poll a directory continuously for new files.
On the other hand, openadaptor provides a clearly structured and documented integration
framework. In practice, the little outdated documentation should not lead to any serious
problems as the version change is minor. The existing documentation is very clear and well
structured.
The system already features many different connectors that should be suitable in the most
cases. Furthermore is provides many advanced features like sophisticated exception handling,
encryption, compression, graphical frontends and even exotic features like benchmarking and
remote logging & monitoring.
CRP Henri Tudor
Page 74/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
3.3.5 Proteus
Proteus is a framework for creating messaging applications and a message broker built upon
that framework. Proteus has adapters that allow databases, message queues, ftp servers, email
and other message sources and sinks to be addressed in a simple, uniform fashion. It differs in
approach from most other toolkits in supporting both centralized and point to point
implementations with a minimal footprint.
The system is java-based and thus can be deployed on any operating system that provides
support for JDK 1.1.
Architecture
As there is very little documentation of the architecture available, it can just be adumbrated.
The terminology of Proteus is quite similar to the one of openadaptor.
The main components are the following:
• Message source
This component fetches the message from the delivering external system. It is able to use
the communication channel and protocol of the external system.
• Message sink
This component delivers the message to the receiving external system. Also routers can act
as message sinks in order to implement branching.
• Filter
Transforms an incoming message into zero or more outgoing messages.
• Mapper
Maps a message onto another sort of object like a prepared statement for a JDBC
(database) connection or a JMS topic.
• Router
Brings a message on a certain path depending on a routing condition or regarding to a
predefined routing path.
• Broker
It can contain all elements listed above and their interactions. It represents the integration
schema of the scenario.
As a particularity of the Proteus architecture, the system can be run either as a centralized
structure (hub and spokes) or as a decentralized bus structure. That allows to use the
advantages of the respective topologies referring to ones needs.
On the opposite side of the coin there is no further explication how to set up the two
described topologies.
Messages
Proteus does not provide support for message containers. Usually a message is handled as
string, but other objects are possible as well.
The procession of a string representation of a message makes it hard to access particular
message fields and to validate the message structure. Support of message containers or at
least the possibility of a generic transformation to a XML representation of the message
would add notable comfort to the message handling.
Features
CRP Henri Tudor
Page 75/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
The feature list of Proteus is quite narrow. This on one hand allows to quickly understand and
use the system. But on the other hand this circumstance also limits the applications and the
flexibility of the system.
In terms of connectivity Proteus supports different messaging systems, the connection via
FTP and to databases. For the FTP and database connectivity, polling is supported.
The lack of support for additional crucial standard protocols like file access, email or socket
will rapidly drive the system application to its limits. The coverage of at least the most widely
used protocols and interfaces should be, besides a satisfying documentation, the next item on
development roadmap of Proteus.
Proteus uses XSLT for message transformation - if the message is available in XML-format.
This provides a satisfying degree of transformation flexibility for the most common cases.
Due to the lack of message containers, format descriptions and transformation possibilities
from string to XML, this is only applicable if the external system already provides the
message in XML format.
The only transformer that is available for string messages is called “UpCaser” and does
exactly what its name suggests, namely setting the message content to upper case.
Furthermore some mappers are available. These mappers prepare message data for the
processing through certain sinks by transforming them to the appropriate Java objects.
Mappers are available for database and Tibco sinks.
The routing capabilities of Proteus are quite powerful. It supports predefined routing paths as
well as dynamic routing depending on certain routing conditions. These routing conditions
can be set up in three different ways:
• XMLSwitch
these routing conditions are used for XML-based messages. The value of certain tags will
be used for routing decisions.
• RegexSwitch
allows routing through the use of regular expressions. Regular expressions allow very
complex routing conditions and thus enable the system to establish highly flexible routing
paths.
• SubstringSwitch
depending on the value of a certain part (substring) of the message, the routing path will
be chosen.
The system seems to support transaction handling. This is indicated by the implementation of
the transactional interface for the particular components. The documentation whereas does
not mention this important functionality.
In contrast to the transaction support is an error handling strategy neither documented nor
implemented. Especially as a transaction support already exists, it would be reasonable to
provide as well an error strategy that cares about the handling of malformed messages and the
reporting of occurring processing errors.
The absence of encryption possibilities of communication channels and message content
makes the system inapplicable to unsecured environments and for the handling of sensitive
information.
Support
CRP Henri Tudor
Page 76/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
The documentation of Proteus is quite basic. It consists of a user guide and a API
documentation.
The user guide contains a short installation instruction, a basic description of the components
and a description of the structure of their XML configuration. There are no additional
information, e.g. about architecture, security or error handling strategies. Thus there is still a
lot of work that has to be put into the documentation of the project – an aspect that is
underestimated in the majority of FOSS projects.
The API documentation just consists of the JavaDoc generated files without any additional
description of the functions, parameters or return values. This states a high entry barrier for
developers who like to join the project.
The link to the forums at the Proteus website is dead but there are reachable Proteus forums at
the sourceforge site where Proteus is hosted. It comprises a support forum and another one for
feature requests and discussions. There are just a view topics and the forums are very rarely
frequented.
The possibility of professional support or a mailing list does not exist.
Usability
There is neither a graphical frontend for configuration, administration or monitoring of the
system nor an interface (e.g. JMX) that allows to easily attach one. The system is configured
through a XML file that is clearly structured and easy to understand.
Test schema
As the Proteus system neither supports recomposition nor file sources or sinks, the test
schema had to be altered. The two systems at the incoming side have been replaced by one
FTP-system that provides the information of both messages within one XML-message. The
XML-format has been necessary to enable the system to change the message format. Since
Proteus only uses XSLT for message mapping and does not provide means for string to XML
transformation, this has been the only feasible way to do the job.
It seems that Proteus states a good example for the often existing gap between theory and
practice. According to the documentation, the use of the limited number of components is
easy and intuitive.
Unfortunately, during the test, it emerged more and more that this was absolutely not the case.
Some mandatory parameters of the component configuration are not documented at all or
wrong.
For instance the configuration of a simple ftp source held some obstacles in store. The
mandatory parameter “getMask” should describe a pattern for the filename of the files to
fetch for processing. Unfortunately the tag is spelled wrong as “getmask” with a lower case
“M” in the documentation. Because of that, the system throws an error message that is
everything but obvious. Furthermore this tag does not describe the file pattern as intended and
shown in the examples but the subdirectory on the FTP-server containing the files. Other,
mandatory tags like “tmpDir” are not documented at all but lead to cryptic error messages not
set.
Finally it was possible to run the test schema without receiving an error immediately. The
system fetched the files from the import FTP-directory and put them to a temporary directory
where they remained. It seemed like the defined routers did not route the messages at all.
Conclusion
CRP Henri Tudor
Page 77/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Proteus comes with a very small footprint. The architecture of the system is very simple as is
the configuration of the components. That leads to fast achievements and a quick
implementation of simple system interconnections. Technically, it was unfortunately
impossible to get the – already altered – test schema up and running.
If it comes to more sophisticated system integration or transformation requirements the
system quickly meets its limitation. This is also fostered through the lack of support for some
essential protocols and interfaces.
Furthermore the lack of encryption, error handling and any control and monitoring tools or
interfaces eliminate the use of Proteus for the integration of critical systems and information.
Proteus is well applicable for a quick integration of non-critical systems that provide the
interfaces that are supported by this EAI system. The missing features and interfaces could
surely be implemented as the architecture itself seems to be solid and open.
But, in order to reach that state, the support infrastructure has to be revised, e.g. by creating a
complete documentation and an easily reachable discussion forum.
CRP Henri Tudor
Page 78/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
3.3.6 xBus
xBus is an, initially by Xenium AG developed, Open Source EAI system that claims to be
very slim and efficient. The philosophy of the project is to integrate and use existing tools to
reduce the development effort. The system has two substantial tasks:
• Routing
fetch messages from different sources and passing through to different target systems.
• Transformation
convert data between different formats and transform the content.
The system provides different operation modes and is built on a consistent layer architecture.
Its reliability has been proven in production environments of commercial projects e.g. for the
trader net of the BMW AG.
Architecture
The xBus system is based on a layer architecture that consists of four different layers.
Figure 25 xBus layer architecture
The layers are composed as follows
• Service layer
third party programs that are running in the background and provide additional
functionality to xBus, like servlet engines, message queue servers, mail servers or
databases. These components are exchangeable because of the use of standardized APIs.
Furthermore, services are optional and thus helpful but not necessary to run xBus.
• Technical layer
this layer is responsible for the communication with the external systems attached to xBus.
It receives the data from and sends it to the external systems by the use of the protocol that
is understood by the external system. Services of the service layer can be used to
accomplish this task.
CRP Henri Tudor
Page 79/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
• Protocol layer
parses the incoming data, stores it in a structured XML format and gathers the needed
routing information. In addition to that, the protocol layer accomplishes the
transformation of data structures into data structures of another format. This is done by
the use of XML transformation.
• Application layer
responsible for the data routing. The routing path is decided based on the message source,
content and information. The decision parameters are fetched from the configuration file.
Components
The xBus system consist of five main components
• Receiver
handles the communication with the interface of the external system and fetches the
messages coming from the external system. This can be accomplished in two ways, either
as server process that waits for requests from the external system or actively by fetching
the information from the external system.
• Router
forwards the messages to the appropriate destinations, depending on their meta
information.
• Transformer
maps data from the message format of the external source system to the one of the external
destination system.
• Sender
as counterpart of the receiver, the sender handles the communication with the interface of
the external destination system.
• Message
parses the data coming from a external system and reformats it from the representation of
the external system to the internal XML representation and back. Furthermore it extracts
meta information that are necessary for routing.
Because of the hot plug support, components can be added and exchanged during the system
is operating. The components will be dynamically loaded as required. This behaviour is
especially helpful for the development of custom component as the system does not have to
be restarted for functionality tests.
CRP Henri Tudor
Page 80/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Message processing
The message processing approach of xBus affects the three major layers and optionally as
well the service layer as support of the technical layer.
Figure 26 xBus message processing
1
The data coming from an external system will be fetched by a receiver.
2
A receiver can either be run as a service and wait for requests of an external system or can
be triggered to fetch data from an external system (polling). The receiver does not alter the
message content in any way.
3
The message module understands the structure of the data format, parses the data and
restructures it to a XML representation. This XML representation is important for the later
data transformation. In addition to that it stores some meta-information that are important
for the message routing.
4
The router sends the message, depending on the meta-information, to one or more
destination paths. The router is able to work in two different modes:
• Invoke
Sending the message to the destinations and wait for a response of the external
destination systems. This response will be send back to the source from where the
message origins. This behaviour is useful for protocols that require acknowledgement
like HL7 or DICOM.
• Distribute
Sending the message to the destinations and without waiting for an acknowledgement of
the external destination systems.
The transformer restructures the message content to the format that is required by the
destination system. This is usually accomplished by a XML transformation.
Afterwards the message module brings the transformed message from the XML
representation to the format that is expected by external destination system, e.g. email or
CSV format.
5
CRP Henri Tudor
Page 81/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
The sender as counterpart of the receiver is responsible for the communication with the
external destination system.
It as well receives the response of the external system after sending the data, if any, and
returns it to the xBus system.
The system supports four different operating modes:
• Single transfer
xBus can be run by a shell script for single data transfers. Optionally the scripts can be
triggered by a scheduler like Cron under Unix or Scheduler under Windows
• Background service
xBus can be run as a standalone background service
• Servlet engine
xBus can be run inside a servlet engine
• Integration
xBus can be integrated in a Java application
Features
xBus comes with receivers and senders that allow to connect to applications via the most
common protocols like File, HTTP, FTP, Message Queue, Email (POP3 for receiver and
SMTP for sender) and AS400. Some protocols like LDAP, database or socket are only
supported for data sinks (senders). The support of receivers for these protocols would
drastically enlarge the field of possible applications. Especially the database access is in
practice often needed for legacy systems that do not provide an interface or use import/export
tables as interface.
Various transformers open up a variety of possibilities for message conversion and mapping:
• RecordType
transforms one RecordTypeMessage into another one.
• XMLWrapper / XMLUnwrapper
wraps a string into a XBUSXMLMessage respectively the other way round.
• XMLParser / XMLSerializer
transforms a string into a Document object (org.w3c.Document) and back.
• XSLT
uses an XSL processor to transform a message from one format to another.
• Java
calls a method of a Java class to transform the source into the destination format, which
method and which class is defined by the configuration.
The lack of compression support can lead to performance bottlenecks if higher amounts of
large messages e.g. messages containing images or reports, have to be handled.
The configuration of xBus is handled through several property files and also some XML
formatted files. The parameter naming and the distributed locations of the configuration files
can be confusing and reduce the clarity.
xBus supports transaction handling for senders and receivers which cover communication
channels that usable for transaction based data transfer:
• File
• FTP
• Message Queue
• Database
CRP Henri Tudor
Page 82/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
• POP3
• AS400
The protocols mentioned above are supported by transaction commit and rollback.
On the security level, the system supports HTTPS and for the system access through the JMX
interface authentication via HTTP. This circumstance refuses the distributed use of xBus if it
exceeds a closed and secured environment. Even if it is used in a closed environment like a
corporate intranet, communication channel and message encryption support would be
desirable for sensitive contents.
The handling of erroneous messages is comparably advanced. If transaction is available and
activated for the used receiver and senders, the transaction will be rolled back. The message
itself will be deleted and can be copied to a dedicated directory called “Deleted Message
Store”. The JMX administration frontend can be used to feed the message back to the system
later on. The frontend does not provide the possibility to alter the message before it is fed
back.
An error message describing the source and cause of the error will be written to the log file
and the journal. Finally a error notification email is generated and sent to the administrators.
Support
The documentation contained in several web pages is excellent. The documentation describes
the architecture, the API and the usage of the system (installation, configuration, starting,
administration, examples).
A developer documentation is missing. This, however, should not be a big problem for
developers because the architecture is well described.
For direct help, a help forum is located at the sourceforge page (sourceforge.net) of xBus.
Additionally an “Open Discussion” forum can be used to request new features. The forums
are not very frequented but feedback is usually posted fast.
Usability
Figure 27 xBus administration frontend
If xBus is run inside a servlet engine, a web-based administration frontend is available.
This frontend can be used to view and control the state of the components, refeed messages
from the “Deleted Message Store” back to the system and to view the configuration, journal
and log file.
CRP Henri Tudor
Page 83/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
The same functionality is provided by the JMX interface that is available if xBus runs in
service mode or inside a servlet engine. The access to the system is protected by
user/password authentication.
As for the vast majority of Open Source EAI systems, does not exist any graphical frontend
for the configuration of the system.
Test schema
As xBus does not provide a socket receiver, the test schema had to be altered to test at least
some functionalities. Because of the fact that xBus neither supports message composition, just
the file receiver part had been established.
In order to be able to implement the altered test schema, the property based main
configuration file had to be created. This file contains all component and routing information.
In addition to that, three XML files had to be created. They describe the data structures of the
incoming message format, the message format of the message that has to be sent to the FTPserver and the format of the message that is sent by email.
Finally, two XSL style sheets that transform the incoming messages to the appropriate output
format are needed.
The altered test schema could be implemented but some obstacles had to be mastered during
the implementation:
The “FinalResolution” parameter, is responsible for the input file handling after a transaction
have been committed. If this parameter is set to preserve the input file, the file should be
processed every time the receiver fetches new messages. After the first processing of the file,
the receiver throws an exception, indicating a wrong number of fields in the message. This
seems to be an implementation bug of the file receiver.
Another bug seemed to occur during the tests if a wildcard was used in the filename for the
files fetched by the file receiver. In the test configuration the receiver threw an exception
whereas everything went fine with wildcards used in the examples shipped with xBus.
Writing the XSL style sheets was a little bit confusing. The internal XML-representation of
the incoming messages that is as well used for the XSL transformation is not consistent with
the XML definition of the message structure. The records have been named “employee” in the
definition but after parsing the incoming message the records are named “record” instead of
the expected “employee”. Thus a XSL mapping of “employee” leads to an exception.
Conclusion
The architecture of xBus is very well structured. Furthermore reduces the integration of well
established third party systems the load for the xBus development and thus could lead to a
more stable system with well developed and tested components. This impression is rounded
by an excellent and well structured documentation that helps to understand the usage of the
system very quick.
xBus supports many operation modes like integration into existing applications, a servlet
engine or the operation as a standalone service. This makes the system quite flexible in terms
of application.
The administration over the remote interface even through a website makes it easy to retain
the control over the system once it is in production.
CRP Henri Tudor
Page 84/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
More advanced features like support of message or communication channel encryption
(besides HTTPS) or compression support for large messages are missing. But as well at the
side of the basic features there are some gaps to fill. Especially receivers for database and
socket connections would be a feasible extension for the future.
An additional threat is the fact that just one developers fosters the projects. That results in a
quite slow progress and can lead to a stall if the developer e.g. due to the lack of time or
interest abandons the project.
XBus is an absolutely usable EAI system that comes with a small footage. Because of its
clear structured architecture it is fast to understand and can quickly be brought into
production. On the other hand, the absence of some basic as well as advanced features and
connectors and eventually the missing scalability support restrict its range of application to
smaller projects that do not need a highly sophisticated and scalable middleware.
CRP Henri Tudor
Page 85/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
4 Evaluation matrix
System
Babeldoc
JyRetic
Mule
Openadaptor
Proteus
xBus
sourceforge.net/projects/b
abeldoc/
retic.sourceforge.net
mule.codehaus.org
www.openadaptor.org
www.info-scape.com/proteus
xbus.sourceforge.net
1.2.1
1.0 July 2004
1.2 / November 2005
1.7.1 / November 2005
0.6 / September 2003
1.6 / November 2005
License
Apache Software License
Apache Software License
Mule licence
Non-copyleft free
software variant of the
MIT licence
GNU GPL
Derived from the Apache
software license
OS support
Java-based
Java/Jython-based
Java-based
Java-based
Java-based
Java-based
System
requirements
Java compliant operating
system
Java compliant operating
system
Java compliant operating
system
Java compliant operating
system
Java compliant operating
system
Java compliant operating
system
3rd party software
JRE 1.4
JRE 1.3
Jython 2.1
wxPython 2.4
JRE 1.4
JRE 1.4
JRE 1.1
JMS server
JRE 1.4
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Website
Version
Architecture
Component based
architecture
Scanner
Pipeline stages
Pipeline
Journal
Ticket
Source
Pre-/Postprocessor
Pipe
Sink
Metadata dictionary
Connector
Transformer
Router
Filter
Endpoint
Interceptor
Source
Pipe
Sink
Transformer
Source
Transformer
Mapper
Sink
Receiver
Sender
Message
Router
Transformer
Connector as client
(outbound
connector)
Yes
Yes
Yes
Yes
Yes
Yes
Connector as
server
(inbound
connector)
Yes
Yes
Yes
Yes
No
Yes
Custom processing
units
(Transformation)
Yes
Yes
Yes
Yes
Yes
Yes
CRP Henri Tudor
Page 86/112
Project Freegate: Market Survey of Open Source EAI Software
System
Authors. Oechsle, Donak
Date: September, 29th, 2006
Babeldoc
JyRetic
Mule
Openadaptor
Proteus
xBus
Dynamic message
routing
Yes
No
Yes
Yes
Yes
Yes
Message container
• XML
• XML
No
• XML
No
• XML
Predefined
message routing
Yes
Yes
Yes
Yes
Yes
No
Scalability
Yes
Yes
Yes
Yes
No
No
Synchronous
communication
Yes
Yes
Yes
Yes
Yes
Yes
Asynchronous
communication
Yes
No
Yes
No
Yes
Yes1
•
•
•
•
•
• FTP
• JDBC
• File
• File
• FTP
• FTP
• JDBC
Yes2
Yes
No
Yes
Yes
Yes
Yes
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
• UpCaser
• StringMapper
•
•
•
•
•
Connector polls
messages
(inbound connector)
Defined module
interface (API)
Predefined
processing units
CRP Henri Tudor
File
FTP
HTTP
SMTP
SQL
Cipher
Compress/Decompress
Domify
Enrich
ExternalApplication
FlatToXml
FtpWriter
JavaXmlDecoder
Jtidy
Reader
RSSChannel
Scripting
Signer
SmtpWriter
SqlEnrich
Excel
FOP
ToXML
Unzip
XMLToFlat
XPath
XPathMetadata
XSLT
Zip
• File
Base64
ByteArray2Serializable
ByteArrayToString
DoomToXml
DQMessageToXml
Gzip
JXPath
Object2XML
Serializable2ByteArray
SGML
StringToByteArray
UU
XML2Object
XmlToDoom
XmlToDQMessage
Append
LowerCase
Prepend
RegularExpression
UpperCase
Page 87/112
RecordType
XMLParser
XMLSerializer
XMLUnwrapper
XMLWrapper
Project Freegate: Market Survey of Open Source EAI Software
System
Authors. Oechsle, Donak
Date: September, 29th, 2006
Babeldoc
•
•
•
•
•
•
•
•
•
•
JyRetic
Mule
Openadaptor
Proteus
xBus
SqlQuery
SqlWriter
SvgTranscode
VelocityTemplatize
XlsToXml
XpathExtract
XpathSplitter
XslFoTransform
XslTransform
ZipArchiveWriter
Features
Exception
handling
File-based
connectors
Message-based
connectors
CRP Henri Tudor
Yes3
Yes3
Yes
Yes
No
Yes
• File
• Ftp
• File
• FTP
• File
• FTP
• File
• FTP
• File
• FTP
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
• JMS
• MQ
•
•
•
•
•
•
HTTP
JMS
SMTP
Soap (sink)
Socket (sink)
SQL
HTTP
Jabber (sink)
JMS
SMTP (sink)
SOAP (source)
XMLBlaster
HTTP
HTTPS
IMAP
Intra VM
IP multicast
JMS 1.1 & 1.02
JRMP
POP3
RMI
Servlet
SMTP
SOAP
SSL
Streams
TCP
TLS
UDP
Xmpp
JMS
RMI A
MQ Series
Sockets
Page 88/112
HTTP
LDAP
Message queue
POP3
SMTP
Socket
Project Freegate: Market Survey of Open Source EAI Software
System
Authors. Oechsle, Donak
Date: September, 29th, 2006
Babeldoc
JyRetic
• JDBC
•
•
•
•
• JavaScript
• XML
• XSLT
Application-based
connectors
Mule
Openadaptor
Proteus
xBus
• JDBC
• JDBC
• JDBC
• JDBC
• XSLT
•
•
•
•
• Java properties file
• XSLT
• Java
• XSLT
• XSLT
• Java
• Property files
No
No
• AS400
• MQ Series
• Tibco
• Tibco
• AS400
Decomposition
Yes
Yes
Yes
Yes
Yes
Yes
Recomposition
No
No
Yes
Yes
No
No
Transactional
support
Yes
No
Yes
Yes
Yes
Yes
Workflow support
No
No
No
No
No
No
Command line
control
Yes
Yes
Yes
Yes
Yes
Yes
Compression
support
Yes
Yes
Yes
Yes
No
No
Authentication
No
No
Yes
Yes
No
Yes
Communication
channel encryption
No
No
• SSL
• TLS
• HTTPS
• SFTP
No
• HTTPS
Message
encryption
Yes4
No
• PQP
JCE
No
No
Message tracking
Yes
Yes
Yes
No
No
Yes
Database-based
connectors
Programmable
transformation
SQL
SQLTree (source)
SQLTreePlus (source)
Xindice
Groovy
Java
PHP
XSLT
Security
Support
CRP Henri Tudor
Page 89/112
Project Freegate: Market Survey of Open Source EAI Software
System
Babeldoc
Authors. Oechsle, Donak
Date: September, 29th, 2006
JyRetic
Mule
Openadaptor
Proteus
xBus
No
No
SymphonySoft
www.symphonySoft.com
No
No
No
• White paper
• User guide
• Developer guide
• User guide
• Component description
• GUI manuel
•
•
•
•
•
• Programmers guide
• White paper
• API documentation
• User guide
• API documentation
•
•
•
•
Forums
Yes
Yes
No
Yes
Yes
Yes
FAQ
No
No
Yes
Yes
No
No
Mailing lists
No
No
•
•
•
•
•
• Developer
• User
• 4 others
No
No
Tutorials
No
Yes
Yes
Yes
No
Yes
Chat channels
No
No
Yes
No
No
No
Administration
Frontend
Yes
Yes
No1
Yes
No
Yes
Configuration
frontend
Yes
Yes
No
Yes
No
No
• Java property files
• XML
• XML
• XML
• XML
• Java property files
• XML
• XML
• Property files
Monitoring
frontend
Yes
Yes
No1
Yes
No
Yes
Test schema
Partially
Partially
Yes
No
Partially
Consulting
Documentation
User guide
API documentation
Architecture guide
Programmers guide
Cookbook
Developer
User
Issues
Announcements
ICM
Architecture guide
User guide
Configuration guide
API documentation
Usability
Configuration files
Partially
Project state
CRP Henri Tudor
Page 90/112
Project Freegate: Market Survey of Open Source EAI Software
System
Babeldoc
Authors. Oechsle, Donak
Date: September, 29th, 2006
JyRetic
Mule
Openadaptor
Proteus
xBus
Community
Little active
Little active
active
Very active
Virtually inactive
Little active
Number of coders/
contributors
13 developers
2 developers
10 developers
1 company
(Dresdner Bank)
3 developers
1 developer
1 company
www.symphonySoft.com
Different occasional
contributors
References
No known references
Bank of New York
www.bankofny.com
National Bank of Serbia
www.nbs.yu
Time on market
5 years (since 2002)
4 years (since 2003)
(originally Xenium AG)
Different occasional
contributors
• Atos Origin
www.de.atosorigin.com
• CitiBank
www.citibank.de
• Deutsche Bank
www.db.com
• HP
www.hp.com
• Sony
www.sony.com
• Abbey
www.abbey.com/index
• Deutsche Bank
www.db.com
• Dresdner Kleinwort
Wasserstein
www.drkw.com
• HP
www.hp.com
4 years (since 2003)
6 years (since 2001)
No known references
4 years (since 2003)
• BMW AG
www.bmwgroup.com
3 years (since 2004)
Architecture
Features
Security
Support
Usability
Project state
Overall rating
1
by the use of message queues
CRP Henri Tudor
2
by the use of external tools like Chron
3
just very basic support
Page 91/112
4
could not be tested because of missing documentation
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
5 Conclusion
The analysis of the available Open Source enterprise application integration systems has
shown that there is a high potential on the Open Source market but there are as well many
projects that claim to be EAI projects, that are not appropriate for general EAI requirements.
The remaining systems are very applicable but also reveal some issues that have to be taken
into respect.
Especially in terms of usability there is in many cases still a high demand for optimization.
Some projects are already in a technical very mature state but it is obvious that the focus has
been set on features instead of usability. This circumstance hampers the application of these
systems by potential users because it levers the barrier to entry.
A further point is the support of specialized, industrial protocols and interfaces. Nearly no
project provides the support for special, in the enterprise environment widespread
applications like e.g. SAP, Peoplesoft or Baan. The same applies to special protocols like e.g.
EDIFACT in the automotive sector or HL7 and DICOM in the healthcare sector. Also does
none of the in-depth tested systems provide workflow support.
Finally is quite often the support an issue that prevents the use of Open Source EAI solutions
in a professional environment. The often weak, incomplete or outdated documentation makes
it hard get familiar with the chosen system. The absence of professional support and training
could prevent decision makers from introducing the systems in their companies and feeding
sensitive date to it.
Nevertheless, there are some projects that are to a surprisingly high degree mature and
already proven in a production environments.
A definite recommendation can not be given here as the selection of the system highly
depends on the requirements.
For large projects with many attached systems Mule and Openadaptor are a good choice as
they provide a high scalability and are designed for highly distributed, high performance
requirements. Especially Mule provides here the most connectivity and state of the art
concepts like ESB, SEDA and JBI. Also, both have already proven to be applicable in the
outlined environments through their application in large companies. In addition to that, Mule
provides professional support that is a main factor for the use with sensitive systems and data.
Openadaptor provides a graphical configuration frontend that makes it easy to define new
schemes. If it comes to bidirectional protocols that require an acknowledgement transfer back
to the sender, openadaptor meets its limits.
For smaller projects that need a quick implementation and do not have such a high
requirements in terms of distribution, scalability and connectivity Babeldoc, JyRetic and xBus
could be the means of choice. Babeldoc provides a huge pool of out of the box message
processing and manipulation functionalities, which however not very well documented.
JyRetic provides the most advanced frontend for the generation, administration and
monitoring, which highly increases the usability and allows to easily build and control new
integration schemes. xBus is highly integrable e.g. in existing applications or a servlet engine.
Unfortunately the weak or not existing encryption support disqualifies these three systems for
the use for sensitive information in a unsecured environment.
CRP Henri Tudor
Page 92/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Annexe A: Glossary
Term
Meaning
Explanation
API
Application
Interface
Programming A set of routines, protocols and tools for
building software applications. A good API
makes it easier to develop a program by
providing all the building blocks. A
programmer puts the blocks together.
APPC
Advanced Program to Program Protocol developed by IBM that enables
Communication
computer programs to communicate via a
network. This protocol is available on all IBM
mainfraime systems.
SCII
American Standard Code for A character encoding based on the English
Information Interchange
alphabet.
BPEL
Business Process
Language
BPM
Business Process Management
Execution Enables users to describe business process
activities and define how they can be
connected to accomplish specific tasks.
The automation and coordination of the
countless assets and tasks that make up
business processes. These assets and tasks can
be internal or external to organizations.
Effective BPM requires the coordination of
people and information technology assets both
inside your business and in your network of
customers and partners.
CAS
Central Authentication Server
Provides a trusted way of user authenticate for
an application.
CSV
Comma-separated values
A delimited data format.
DAO
Data Access Objects
Enables transparent access to the data source
through abstraction of the underlying data
access.
DICOM
Digital
Imaging
and A comprehensive set of standards for
Communications in Medicine
handling, storing, printing, and transmitting
information in medical imaging.
DOXML Data Object eXtensible Markup A XML format for describing serialized Java
Language
objects.
EAI
Enterprise
Integration
Application The use of software and architectural
principles to bring together (integrate) a set of
enterprise computer applications.
Typically, an enterprise has existing legacy
applications and databases and wants to
continue to use them while adding or
migrating to a new set of applications that
CRP Henri Tudor
Page 93/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
exploit the Internet, e-commerce, extranet, and
other new technologies.
EAI may involve developing a new total view
of an enterprise's business and its applications,
seeing how existing applications fit into the
new view, and then devising ways to
efficiently reuse what already exists while
adding new applications and data.
EDA
Event-Driven Architecture
Defines a methodology for designing and
implementing applications and systems in
which events transmit between loosely
coupled software components and services.
An event-driven system is typically comprised
of event consumers and event producers.
Event consumers subscribe to an intermediary
event manager, and event producers publish to
this manager. When the event manager
receives an event from a producer, the
manager forwards the event to the consumer.
If the consumer is unavailable, the manager
can store the event and try to forward it later.
This method of event transmission is referred
to in message-based systems as store and
forward.
EII
Enterprise
Integration
ESB
Enterprise Service Bus
Category of middleware infrastructure
products or technologies, based on Web
services standards, that enable a serviceoriented architecture via an event-driven and
XML-based messaging engine (the bus). An
enterprise service bus generally provides an
abstraction layer on top of an Enterprise
Messaging System which allows integration
architects to exploit the value of messaging
without writing code.
ETL
Extract, Transform and Load
Processes that enable companies to move data
from multiple sources, reformat and cleanse it
and load it into another database, a data mart
or a data warehouse for analysis, or on another
operational system to support a business
process.
FOP
Formatting Objects Processor
XSL driven output independent formatter for
the generation of formatted documents.
CRP Henri Tudor
Information Approach to information integration that
provides users with a real-time, single view of
information from disparate data sources across
and beyond the enterprise.
Page 94/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
GUI
Graphical User Interface
A interface based on graphical elements for
the handling of an application.
HL7
Health Level 7
Protocol standard for the interfacing of clinical
data in healthcare applications.
HTTP
Hypertext Transfer Protocol
Main protocol that is used to transfer
information on the World Wide Web.
HTTPS
HyperText
Secure
JAAS
Java
Authentication
Authorization Service
LDAP
Lightweight
Protocol
MOM
Message-Oriented Middleware
Transfer
Protocol Allows a secure connection between client
(mainly browser) and webserver
and Enables Java applications to access
authentication and access control services
without being tied to those services
Database Access Networking protocol for querying and
modifying directory services running over
TCP/IP
Message-oriented middleware (MOM) is a
client/server infrastructure that increases the
interoperability, portability, and flexibility of
an application by allowing the application to
be distributed over multiple heterogeneous
platforms.
It reduces the complexity of developing
applications that span multiple operating
systems and network protocols. This is
accomplished by insulating the application
developer from the details of the various
operating system and network interface-APIs
that extend across diverse platforms and
networks.
PDF
Portable Document Format
Very widespread format and open standard for
electronical documents.
RSS
Rich Site Summary
A format for so called web feeds. With an
appropriate viewer it is possible to subscribe
to a webpage and periodically receive new
content as soon as available.
SEDA
Staged Event Driven
Architecture
An extention of EDA that divides the tasks
into subtasks and every subtask will be
accomplished in an own thread. This method
allows to sustain enormous variations in load.
SOA
Service Oriented Architecture
A service-oriented architecture is essentially a
collection of services. These services
communicate
with
each
other.
The
communication can involve either simple data
passing or it could involve two or more
services coordinating some activity. Some
means of connecting services to each other is
CRP Henri Tudor
Page 95/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
needed.
The first service-oriented architecture for
many people in the past was with the use
DCOM or Object Request Brokers (ORBs)
based on the CORBA specification.
SSL
Secure Socket Layer
Certificate based communication
encryption of the transport layer.
SVG
Scalable Vector Graphics
XML markup language for describing twodimensional vector graphics
TLS
Transport Layer Security
The successor of SSL based on SSL 3.0
URI
Uniform Resource Identifier
Identifies uniquely a digital resource.
XML
eXtended Markup Language
A general
description.
XMLRPC
eXtended Markup Language – A remote procedure call protocol which uses
Remote Procedure Call
XML to encode its calls and HTTP as a
transport mechanism.
XSL-FO
Extensible Stylesheet Language A unified presentational language that
– Formatting Objects
describes a computer driven layout of a
document.
CRP Henri Tudor
purpose
language
channel
for
data
Page 96/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Annexe B: References
[01]
Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions;
Gregor Hohpe, Bobby Woolf;
Addison-Wesley, October 2003;
ISBN 0321200683
[02]
SEDA: An Architecture for Well Conditioned, Scalable Internet Services;
Matt Welsh, David Culler, Eric Brewer; fmdw,culler,[email protected];
Computer Science Division; University of California, Berkeley
[03]
An Architecture for Highly Concurrent, Well-Conditioned Internet Services;
Matthew David Welsh; Fall 2002
B.S. (Cornell University) 1996, M.S. (University of California, Berkeley) 1999
[04]
EAI User Group - Open Source EAI Technologies,
www.eaiusergroup.com/modules.php?s=&name=Sections&sop=viewarticle&artid=2,
accessed 2005/06/16
[05]
Manageability – Open Source EAI Written in Java,
www.manageability.org/blog/stuff/open-source-messaging-integration-transformation-routing-java/view,
accessed 2005/06/16
[06]
Ebizq -The Non-Vendor Source of EAI Apps,
www.ebizq.net/topics/eai/features/1459.html,
accessed 2005/06/16
[07]
Wikipedia – The free Encyclopedia,
en.wikipedia.org,
accessed 2005/09/30 - 2006/09/30
[08]
SourceForge,
http://sourceforge.net,
accessed 2005/04/01 - 2006/09/30
[09]
Babeldoc,
sourceforge.net/projects/babeldoc/
accessed 2005/06/24
[10]
Business Integration Engine,
www.brunswickwdi.com/features,
accessed 2005/03/30
[11]
Glover ETL,
cloveretl.berlios.de,
accessed 2005/10/11
[12]
Conductor DocSOAP XDK,
www.commerceone.com/developers,
accessed 2005/06/22
[13]
ConnectorWorks,
www.connectorworks.org,
accessed 2005/04/04
[14]
DataServer,
www.mii.ucla.edu/DataServer,
accessed 2005/05/19
[15]
Elemenope,
elemenope.org,
accessed 2005/08/29
[16]
it.gim,
www.it-financial.de,
accessed 2005/03/28
[17]
JEngine,
www.jengine.org,
accessed 2005/05/12
CRP Henri Tudor
Page 97/112
Project Freegate: Market Survey of Open Source EAI Software
[18]
JyRetic,
retic.sourceforge.net,
accessed 2005/08/08
[19]
mec-eagle,
www.mec-eagle.org,
accessed 2005/07/5
[20]
Message Force,
http://messageforge.sourceforge.net,
accessed 2005/04/14
[21]
Mirth,
www.mirthproject.org,
accessed 2006/09/18
[22]
Mule,
mule.codehaus.org,
accessed 2005/11/23
[23]
NaradaBrokering,
www.naradabrokering.org,
accessed 2005/06/30
[24]
Net Kernel,
www.1060research.com/netkernel/index.html,
accessed 2005/06/21
[25]
Octupus,
octopus.objectweb.org,
accessed 2005/07/29
[26]
Openadaptor,
www.opendaptor.org,
accessed 2005/12/12
[27]
OpenEAI,
www.openeai.org,
accessed 2005/10/13
[28]
OpenQueue,
openqueue.sourceforge.net,
accessed 2005/09/16
[29]
OpenSymphony,
www.opensymphony.com,
accessed 2005/11/08
[30]
Orbeon PresentationServer,
www.orbeon.com/software,
accessed 2006/04/07
[31]
OSMQ,
www.osmq.org,
accessed 2005/07/26
[32]
Proteus,
www.info-scape.com/proteus,
accessed 2006/03/14
[33]
ServiceMix,
servicemix.org,
accessed 2005/07/24
[34]
S-Integrator,
www.s-integrator.org,
accessed 2005/04/14
[35]
SolAce Secure Wire,
www.snapinhipaa.com/ss/,
accessed 2005/10/
[36]
Tambora,
tambora.zenplex.org,
accessed 2005/04/18
CRP Henri Tudor
Authors. Oechsle, Donak
Date: September, 29th, 2006
Page 98/112
Project Freegate: Market Survey of Open Source EAI Software
[37]
xBus,
software.xineo.net/xil.jspx,
accessed 2006/01/16
[38]
Xineo XIL,
xbus.sourceforge.net,
accessed 2005/06/21
[39]
XML Blaster,
www.xmlblaster.org,
accessed 2005/09/28
[40]
FreshMeat,
freshmeat.net,
continuously
CRP Henri Tudor
Authors. Oechsle, Donak
Date: September, 29th, 2006
Page 99/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Annexe C: Table of figures
Figure 1 Multiple input of information with media conversion................................................ 5
Figure 2 Point to point connection ............................................................................................. 6
Figure 3 EAI system structure example ..................................................................................... 7
Figure 4 Topological comparison between Hub & Spoke (left) and Bus structure (right)........ 7
Figure 5 Babeldoc architecture schema ................................................................................... 47
Figure 6 Babeldoc Pipeline configurator ................................................................................. 50
Figure 7 Babeldoc journal viewer ............................................................................................ 51
Figure 8 JyRetic adaptor structure example............................................................................. 54
Figure 9 JyRetic configuration and administration frontend ................................................... 56
Figure 10 Mule architecture ..................................................................................................... 59
Figure 11 Mule architecture detailed ....................................................................................... 60
Figure 12 Mayor Mule components & stages .......................................................................... 60
Figure 13 Schematic example of a Mule configuration ........................................................... 61
Figure 14 Asynchronous event processing .............................................................................. 61
Figure 15 Synchronous event processing................................................................................. 62
Figure 16 Transformer chaining............................................................................................... 63
Figure 17 Mule exception strategies ........................................................................................ 63
Figure 18 Mule IDE ................................................................................................................. 65
Figure 19 OpenAdaptor Structure ............................................................................................ 67
Figure 20 Openadaptor configuration example........................................................................ 68
Figure 21 Functional schema of the openadaptor controller.................................................... 69
Figure 22 Openadaptor error handling example ...................................................................... 71
Figure 23 The Adaptor Framework Editor............................................................................... 72
Figure 24 The HAT message management frontend ............................................................... 73
Figure 25 xBus layer architecture ............................................................................................ 79
Figure 26 xBus message processing......................................................................................... 81
Figure 27 xBus administration frontend .................................................................................. 83
CRP Henri Tudor
Page 100/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Annex D: Licenses
5.1 Apache License, Version 1.1
Copyright (c) 1995-1999 The Apache Group. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are
met:
1.
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3.
All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product
includes software developed by the Apache Group for use in the Apache HTTP server project (http://www.apache.org/)."
4.
The names "Apache Server" and "Apache Group" must not be used to endorse or promote products derived from this software without
prior written permission. For written permission, please contact [email protected]
5.
Products derived from this software may not be called "Apache" nor may "Apache" appear in their names without prior written
permission of the Apache Group.
6.
Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the
Apache Group for use in the Apache HTTP server project (http://www.apache.org/)."
THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE GROUP OR ITS CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This software consists of voluntary contributions made by many individuals on behalf of the Apache Group and was originally based on
public domain software written at the National Center for Supercomputing Applications, University of Illinois, Urbana-Champaign. For more
information on the Apache Group and the Apache HTTP server project, please see <http://www.apache.org/>.
CRP Henri Tudor
Page 101/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
5.2 GPL
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License
is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General
Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some
other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs,
too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if
you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These
restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have.
You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original authors' reputations.
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will
individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be
licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification follow.
GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0.
This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the
Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a
portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included
without limitation in the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
1.
You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this
License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer
warranty protection in exchange for a fee.
2.
You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
a)
You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
b)
You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or
any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
c)
If the modified program normally reads commands interactively when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice
and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the
program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself
is interactive but does not normally print such an announcement, your work based on the Program is not required to print
an announcement.)
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to t
hose sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a
work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees
extend to the entire whole, and thus to each and every part regardless of who wrote it.
CRP Henri Tudor
Page 102/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or collective works based on the Program.
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program)
on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
3.
You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms
of Sections 1 and 2 above provided that you also do one of the following:
a)
Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms
of Sections 1 and 2 above on a medium customarily used for software interchange; or,
b)
Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost
of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
c)
Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you received the program in object code or executable form with
such an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete
source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used
to control compilation and installation of the executable. However, as a special exception, the source code distributed need not
include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so
on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4.
You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this
License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so
long as such parties remain in full compliance.
5.
You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying the Program or works based on it.
6.
Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to
this License.
7.
If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do
not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you,
then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended
to apply and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is
implemented by public license practices. Many people have made generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
8.
If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original
copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those
countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the
limitation as if written in the body of this License.
9.
The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it
and "any later version", you have the option of following the terms and conditions either of that version or of any later version
published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any
version ever published by the Free Software Foundation.
10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we
sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of
our free software and of promoting the sharing and reuse of software generally.
CRP Henri Tudor
Page 103/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE
EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
NECESSARY SERVICING, REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT
HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED
ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT
NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR
THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH
HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free
software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey
the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the
commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever
suits your program.
You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library,
you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU
Library General Public License instead of this License.
CRP Henri Tudor
Page 104/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
5.3 LGPL
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free
Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this
license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it
if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these
things.
To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights.
These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you.
You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete
object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you
must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by
someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation
will not be affected by problems that might be introduced by others.
Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent
license obtained for a version of the library must be consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this
license for certain libraries in order to permit linking those libraries into non-free programs.
When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire
combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library.
We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public
License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are
the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special
circumstances.
For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a
de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the
same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the
Lesser General Public License.
In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free
software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating system.
Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked
with the Library has the freedom and the wherewithal to run that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work
based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be
combined with the library in order to run.
CRP Henri Tudor
Page 105/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND
MODIFICATION
0.
This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation
is included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code
means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control
compilation and installation of the library.
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work
based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library
does and what the program that uses the Library does.
1.
You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all
the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for
a fee.
2.
You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
a)
The modified work must itself be a software library.
b)
You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.
c)
You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.
d)
If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure
that, in the event an application does not supply such function or table, the facility still operates, and performs whatever
part of its purpose remains meaningful.
(For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be
optional: if the application does not supply it, the square root function must still compute square roots.)
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and
can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work
based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend
to the entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or collective works based on the Library.
In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a
volume of a storage or distribution medium does not bring the other work under the scope of this License.
3.
You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library.
To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License,
version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared,
then you can specify that version instead if you wish.) Do not make any other change in these notices.
Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of the Library into a program that is not a library.
4.
You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the
terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code,
which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.
If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to
copy the source along with the object code.
5.
A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore
falls outside the scope of this License.
CRP Henri Tudor
Page 106/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any
executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.
6.
As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered
by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include
the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must
do one of these things:
a)
Accompany the work with the complete corresponding machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable
linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source
code, so that the user can modify the Library and then relink to produce a modified executable containing the modified
Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be
able to recompile the application to use the modified definitions.)
b)
Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time
a copy of the library already present on the user's computer system, rather than copying library functions into the
executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the
modified version is interface-compatible with the version that the work was made with.
c)
Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in
Subsection 6a, above, for a charge no more than the cost of performing this distribution.
d)
If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the
above specified materials from the same place.
e)
Verify that the user has already received a copy of these materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system
on which the executable runs, unless that component itself accompanies the executable.
It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany
the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you
distribute.
7.
You may place library facilities that are a work based on the Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based
on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:
a)
Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the Sections above.
b)
Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8.
You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights
under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9.
You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any
further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third
parties with this License.
CRP Henri Tudor
Page 107/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do
not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you,
then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended
to apply, and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented
by public license practices. Many people have made generous contributions to the wide range of software distributed through that
system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute
software through any other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original
copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those
countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the
limitation as if written in the body of this License.
13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such
new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it
and "any later version", you have the option of following the terms and conditions either of that version or of any later version
published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version
ever published by the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free
status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE
EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT
HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED
ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT
NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR
THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH
HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
CRP Henri Tudor
Page 108/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
CRP Henri Tudor
Page 109/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
5.4 Openadapter license
Permissive non-copyleft free software variant of the MIT licence.
Copyright (C) 2001 - 2005 The Software Conservancy as Trustee. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Nothing in this notice shall be deemed to grant any rights to trademarks, copyrights, patents, trade secrets or any other intellectual property of
the licensor or any contributor except as expressly stated herein. No patent license is granted separate from the Software, for code that you
delete from the Software, or for combinations of the Software with other software or hardware.
CRP Henri Tudor
Page 110/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
5.5 Mule License
Copyright (c) 2003-2005 SymphonySoft Limited. All rights reserved.
http://www.symphonysoft.com
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are
met:
1.
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with
the distribution.
3.
The end-user documentation included with the redistribution, if any, must include the following acknowlegement:
"This product includes software developed by SymphonySoft Limited (http://www.symphonysoft.com)."
Alternately, this acknowlegement may appear in the software itself, if and wherever such third-party acknowlegements normally
appear.
4.
All advertising materials mentioning features or use of this software must display the following acknowledgement:
"This product includes software developed by SymphonySoft Limited (http://www.symphonysoft.com) and its contributors".
5.
Neither the name of SymphonySoft Limited, Cubis Limited, Mule, Universal Message Objects nor the names of its contributors
may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
CRP Henri Tudor
Page 111/112
Project Freegate: Market Survey of Open Source EAI Software
Authors. Oechsle, Donak
Date: September, 29th, 2006
5.6 xBus License
The xBus Software License, Version 1.0
(derived from the Apache Software License 1.1)
Copyright (c) 2005 Stefan Fleckenstein
All rights reserved
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are
met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
The end-user documentation included with the redistribution, if any, must include the following acknowlegement:
"This product includes software developed by Stefan Fleckenstein and Xenium AG."
Alternately, this acknowlegement may appear in the software itself, if and wherever such third-party acknowlegements normally appear.
The names "xBus" must not be used to endorse or promote products derived from this software without prior written permission. For written
permission, please contact sfleckenstein[at]sourceforge.net.
Products derived from this software may not be called "xBus" nor may "xBus" appear in their names without prior written permission of
Stefan Fleckenstein.
THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL STEFAN FLECKENSTEIN OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
CRP Henri Tudor
Page 112/112