AtomikosDataSourceBean ds = new AtomikosDataSourceBean(); ds.setUniqueResourceName("postgres"); ds.setXaDataSourceClassName("org.postgresql.xa.PGXADataSource"); Properties p = new Properties(); p.setProperty ( "user" , "java" ); p.setProperty ( "password" , "java" ); p.setProperty ( "serverName" , "localhost" ); p.setProperty ( "portNumber" , "5432" ); p.setProperty ( "databaseName" , "java" ); ds.setXaProperties ( p ); ds.setConnectionPoolSize(5);
Tested with PostgreSQL 8.2.7 and JDBC driver version 8.3-603.jdbc3
Earlier versions of the driver/DBMS are broken with respect to XA…
To enable XA, set the "max_prepared_transactions" parameter in postgresql.conf. Its value should be at least as large as the "max_connections" value. See this github project for setting up a docker image with PostgreSQL and XA.