阅读atomikos文档
This commit is contained in:
@@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user