阅读atomikos文档
This commit is contained in:
@@ -45,4 +45,68 @@ XA(eXtended Architecture)是一个标准,用于访问位于同一全局事务
|
||||
#### XA的好处
|
||||
因为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();
|
||||
}
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user