A client opens two JDBC connections within a global transaction in order to access databases A and B. Databases A and B are enlisted in the transaction while another database acts as the two-phase commit engine. The two-phase commit engine manages transactional updates to both databases.