<dependency>
<groupId>jotm</groupId>
<artifactId>jotm</artifactId>
<version>2.2.11</version>
</dependency>
properties
TransactionManager.factory=org.objectweb.jotm.Jotm
Transaction.timeout=300
import org.objectweb.jotm.Jotm;
public class TransactionalLibrary {
private Jotm jotm;
public TransactionalLibrary() {
jotm = new Jotm(true, false);
}
public void performTransaction() {
try {
jotm.getTransactionManager().begin();
jotm.getTransactionManager().commit();
} catch (Exception e) {
try {
jotm.getTransactionManager().rollback();
} catch (Exception ex) {
ex.printStackTrace();
}
e.printStackTrace();
}
}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class TransactionalLibrary {
// ...
public void performTransaction() {
try {
jotm.getTransactionManager().begin();
Connection connection = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);
PreparedStatement statement = connection.prepareStatement("INSERT INTO users (name, email) VALUES (?, ?)");
statement.setString(1, "John Doe");
statement.setString(2, "john.doe@example.com");
statement.executeUpdate();
statement.close();
connection.close();
jotm.getTransactionManager().commit();
} catch (Exception e) {
try {
jotm.getTransactionManager().rollback();
} catch (Exception ex) {
ex.printStackTrace();
}
e.printStackTrace();
}
}
}
<bean id="transactionManager" class="org.springframework.transaction.jta.JotmFactoryBean">
<property name="userTransactionName" value="java:comp/UserTransaction" />
<property name="transactionManagerName" value="java:comp/TransactionManager" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />