I’ve had a couple of queries in the past week about whether or not service integration bus messaging engines using a database for the message store need an XA capable JDBC data source. Thanks to Gareth Bottomley in the development team for locating the appropriate section hidden away in the InfoCenter that indicates you should configure a Connection pool data source i.e. non-XA capable. The messaging engine does not use the XA capabilities of the database, instead acting as a resource manager in its own right. So, for example, when you receive a message under a global transaction it is not deleted from the data base at that point under a JDBC transaction. Instead, it is non-transactionally marked with the Xid of the global transaction so that it is not received by other consumers and then, only when the transaction is commited, is the record removed. This is particularly important to note when using Oracle as the database as the Oracle XA driver has notoriously poor performance.