Chapter 1. Introduction

What's LIXA extension?

LIXA project is designed to implement a C interface as described in [TXspec]; alternatively C++ can be used without any specific issue: the C function exposed by LIXA API are wrapped by standard extern "C":

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

[... function prototypes ...]

#ifdef __cplusplus
#endif /* __cplusplus */

LIXA API is not an object oriented interface, but this should not hurt you too much if you were developing a C++ software.

If you are developing a software using a completely different language as Perl, PHP, Python, Ruby and so on, the LIXA C interface will be quite useless. You could think all you need is a LIXA wrapper for your preferred language, but unfortunately wrapping LIXA interface is not enough: XA specification (see [XAspec]) needs a live interface between the Transaction Manager (i.e. LIXA) and the Resource Managers (databases, message oriented middlewares, etc...). Most database drivers were developed with the intent of an exclusive management of the database API; this is fine until you need two phase commit (Distributed Transaction Processing) and a third uninvited guest, the Trasaction Manager, appears.

LIXA extensions are intended to supply you alternative programming languages for Distributed Transaction Processing.


LIXA extensions are 100% experimental code and should not used for production environments. The code is provided in the hope someone will improve it.