<dependency>
<groupId>bitronix.tm</groupId>
<artifactId>btm</artifactId>
<version>2.1.4</version>
</dependency>
properties
resource.ds1.className = bitronix.tm.resource.jdbc.lrc.LrcXADataSource
resource.ds1.uniqueName = MyDataSource
resource.ds1.minPoolSize = 1
resource.ds1.maxPoolSize = 5
resource.ds1.driverProperties.url = jdbc:mysql://localhost/mydatabase
resource.ds1.driverProperties.user = myuser
resource.ds1.driverProperties.password = mypassword
import bitronix.tm.BitronixTransactionManager;
import bitronix.tm.TransactionManagerServices;
import bitronix.tm.jndi.BitronixContext;
import bitronix.tm.resource.jdbc.PoolingDataSource;
import javax.transaction.TransactionManager;
import javax.transaction.UserTransaction;
import java.sql.Connection;
import java.sql.SQLException;
public class BitronixExample {
public static void main(String[] args) throws Exception {
TransactionManager transactionManager = TransactionManagerServices.getTransactionManager();
UserTransaction userTransaction = transactionManager;
PoolingDataSource dataSource = new PoolingDataSource();
dataSource.setUniqueName("MyDataSource");
dataSource.setClassName("bitronix.tm.resource.jdbc.lrc.LrcXADataSource");
dataSource.setMaxPoolSize(5);
dataSource.setMinPoolSize(1);
dataSource.setDriverProperties(getDataSourceProperties());
BitronixContext bitronixContext = new BitronixContext();
bitronixContext.getEnvironment().bind("jdbc/MyDataSource", dataSource);
userTransaction.begin();
try {
Connection connection = dataSource.getConnection();
// ...
userTransaction.commit();
} catch (SQLException e) {
e.printStackTrace();
userTransaction.rollback();
} finally {
dataSource.close();
transactionManager.shutdown();
}
}
private static Properties getDataSourceProperties() {
Properties properties = new Properties();
properties.setProperty("url", "jdbc:mysql://localhost/mydatabase");
properties.setProperty("user", "myuser");
properties.setProperty("password", "mypassword");
return properties;
}
}