阅读atomikos文档

This commit is contained in:
asahi
2024-04-07 12:47:12 +08:00
parent 7c539ad040
commit e37ec41b6e

View File

@@ -45,4 +45,68 @@ XA(eXtended Architecture)是一个标准,用于访问位于同一全局事务
#### XA的好处 #### XA的好处
因为XA是一种标准故而作为全局事务的一部分任何特定实现的数据库driver实现都可以和任一其他平台的事务管理器一起工作XA基于两阶段提交提供了将不同平台的数据库driver和事务管理器整合到一起的能力。 因为XA是一种标准故而作为全局事务的一部分任何特定实现的数据库driver实现都可以和任一其他平台的事务管理器一起工作XA基于两阶段提交提供了将不同平台的数据库driver和事务管理器整合到一起的能力。
#### XA in Java ### TransactionsEssentials
#### 底层实现
Atomikos通过模块化的方式进行设计其存在一个叫做`icatch`的内核内核提供了专有api。许多transactional service都基于icatch内核提供的api构建例如JTA基于icatch api实现了JTA api。
atomikos是嵌入式的transaction manager其是嵌入java应用的并不需要启动独立的transaction manager服务。
#### 通过Atomikos编码
在编写代码时通常仅使用JTA api并不需要使用icatch api。
为了初始化transaction manager需要创建`com.atomikos.icatch.jta.UserTransactionManager`实例,并且调用实例的`init`方法,并且在应用关闭时,需要调用事务管理器的`close`方法。
`com.atomikos.icatch.jta.UserTransactionManager`实现了`javax.transaction.TransactionManager`,可以通过`begin()``commit()``rollback()`来控制事务。
在初始化事务时会读取classpath的根路径读取`jta.properties`文件。
#### 简单的jta示例
```java
import com.atomikos.icatch.jta.UserTransactionManager;
import com.atomikos.jdbc.AtomikosDataSourceBean;
import javax.jta.TransactionManager;
import javax.sql.DataSource;
public class AtomikosExample {
// Atomikos implementations
private static UserTransactionManager utm;
private static AtomikosDataSourceBean adsb;
// Standard interfaces
private static TransactionManager tm;
private static DataSource ds;
// initialize resources
private static void init() {
utm = new UserTransactionManager();
utm.init();
tm = utm;
adsb = ...; // omitted for clarity
ds = adsb;
}
// release resources
private static void shutdown() {
adsb.close();
utm.close();
}
public static void main(String[] args) {
init();
tm.begin();
Connection c = ds.getConnection();
// use connection to execute SQL
c.close();
tm.commit();
shutdown();
}
}
```