Enduro/X is an enterprise middleware platform for distributed transaction processing.
It is built on proven APIs as X/Open group’s XATMI and XA.
The platform mostly functions as a replacement of Oracle’s Tuxedo, requiring little or none source code adaptation (depending on APIs used and supported by Enduro/X), and having configuration semantics similar to Tuxedo. In foundation of the platform are used in-memory kernel message queues. This ensures high Inter Process Communication throughput.
This is free and open source software.
Key Features
- Standards based APIs – SCA, The Open Group XATMI Communication types – Synchronous, Asynchronous, Conversational, Publish/subscribe.
- Typed buffers:
- UBF (Unified Buffer Format) which provides emulation of Tuxedo’s FML/FML32 format. UBF if high performance binary protocol buffer format. Buffer is indexed by binary search on fixed data types. Types supported include BFLD_CHAR, BFLD_SHORT, BFLD_LONG, BFLD_FLOAT, BFLD_DOUBLE, BFLD_STRING, BFLD_CARRAY, BFLD_PTR, BFLD_UBF (recursive buffers), BFLD_VIEW
- STRING buffer format.
- CARRAY (byte array) buffer format.
- JSON buffer format, automatic conversion between JSON and UBF available.
- VIEW buffer (starting from version 5.0+). This offer C structure sending between processes in cross platform way. Also this allows to map UBF fields to VIEW fields, thus helping developer quicker to develop applications, by combining UBF and VIEW buffers.
- Transaction Management – Global Transactions – Two-phase commit protocol – X/Open XA
Clustering – on peer-to-peer basis. - Multi-threaded Event broker (also called publish and subscribe messaging).
- System process monitoring and self healing (pings and restarts).
- SOA Service cache. XATMI services can be cached to LMDB database. Resulting that next call to service from any local client receives results directly from cache (mainly from direct memory read).
- Dynamic re-configuration.
- Custom server polling extensions.
- XATMI sub-system is able to work with out main application server daemon (ndrxd)
- Main application server daemon (ndrxd) can be restarted (if crashed). When started back it enters in learning mode for some period of time, in which in gathers information about system, what services are running, etc. After learning =-period, it starts to do normal operations
tpforward() call. - ATMI server threads may become clients, and can do tpcall().
- Extensive logging & debugging. Enduro/X logging can be configured per binary with different log levels. As ATMI servers can be started outside of appserver, it is possible to debug them from programming IDE or with tools like valgrind.
- For quality assurance project uses automated unit-testing and integration-testing
- Built in ATMI service profiling.
- Environment variables can be updated for XATMI server processes with out full application reboot.
- Generic client process monitor (cpm). Subsystem allows to start/stop/monitor client executables. At client process crashes, cpm will start it back.
- Provides configuration data encryption feature, so that software which is built on top of Enduro/X may comply with Payment Card Industry Data Security Standard (PCI/DSS).
- Application monitoring with TM_MIB interface. For example NetXMS.
- XA Driver for PostgreSQL.
- Fully functional buildserver, buildclient, buildtms tools.
- Provides server entry point _tmstartserver().
- Multi-threaded dispatcher support (mindispatchthreads/maxdispatchthreads), including support for tpsvrthrinit() tpsvrthrdone() callbacks.
- Fast Pool Allocator – for performance reasons malloc results are cached, so that blocks can be re-used instead of doing malloc again, thus Enduro/X is gaining overall performance.
- Support of writing server daemons for multi-threaded servers i.e. tpacall() to self advertised services during tpsvrinit().
- Support of Data Dependent Routing for UBF buffers.
- XATMI service auto-transactions are supported.
- For Linux and FreeBSD platforms call priorities are supported.
- Enduro/X logger now supports log-rotate calls (to re-open log handles) during the runtime.
- Enduro/X logger now allows to change log levels on the fly for any Enduro/X related process.
Enduro/X provides Latent Command Framework (LCF), where developers via plugin interface can publish CLI commands in xadmin tool, while any Enduro/X related program can receive such commands via callback and perform custom action. - Has tpsetcallinfo() and tpgetcallinfo() APIs.
- Product is extensively documented.
- Tool for automatic configuration migration from Oracle Tuxedo to Enduro/X.
Website: www.endurox.org
Support: GitHub Code Repository
Developer: Mavimax Ltd
License: GNU Affero General Public License v3.0
Enduro/X is written in C. Learn C with our recommended free books and free tutorials.
Enduro/X provides APIs for C/C++/Go and Java. Additionally connectivity package is provided for exposing XATMI services as rest services.
Related Software
| C++ Application Servers | |
|---|---|
| POCO | C++ libraries for building applications |
| Wt | C++ library for developing web applications |
| CppCMS | Web development framework for performance demanding applications |
| Enduro/X | Middleware platform for distributed transaction processing |
| Tntnet | Web application server for web applications written in C++ |
Read our verdict in the software roundup.
Explore our comprehensive directory of recommended free and open source software. Our carefully curated collection spans every major software category.This directory is part of our ongoing series of informative articles for Linux enthusiasts. It features hundreds of detailed reviews, along with open source alternatives to proprietary solutions from major corporations such as Google, Microsoft, Apple, Adobe, IBM, Cisco, Oracle, and Autodesk. You’ll also find interesting projects to try, hardware coverage, free programming books and tutorials, and much more. Discovered a useful open source Linux program that we haven’t covered yet? Let us know by completing this form. |

