第 5 章 使用 Narayana 事务管理器
本节介绍了通过实施 javax.transaction.UserTransaction
接口、org.springframework.transaction.PlatformTransactionManager
接口或 javax.transaction.Transaction
Manager 接口来使用 Narayana 事务管理器。您选择的要使用的接口取决于应用程序的需求。在本章最后,讨论获取 XA 资源的问题。这些信息被组织如下:
有关 Java 事务 API 详情,请查看 Java 事务 API(JTA)1.2 规格和 Javadoc。
5.1. 使用 UserTransaction 对象
为交易递减实施 javax.transaction.UserTransaction
接口。用于开始、提交或回滚事务。这是您可能直接在应用程序代码中使用的 JTA 接口。但是,UserTransaction
接口只是计算事务的方法之一。有关您可以分离事务的不同方法的讨论,请参阅 第 9 章 编写使用事务的 Camel 应用程序。
5.1.1. UserTransaction 接口的定义
JTA UserTransaction
接口定义如下:
public interface javax.transaction.UserTransaction { public void begin(); public void commit(); public void rollback(); public void setRollbackOnly(); public int getStatus(); public void setTransactionTimeout(int seconds); }
5.1.2. UserTransaction 方法的描述
UserTransaction
接口定义以下方法:
- begin()
- 启动新事务并将其与当前线程相关联。如果任何 XA 资源都与此事务相关联,则事务会隐式成为 XA 事务。
- commit()
正常完成当前的事务,以便所有待处理的更改都变成永久更改。提交后,不再有一个与当前线程关联的事务。
注意但是,如果当前事务仅标记为回滚,则在调用
commit()
时,实际上将回滚事务。- rollback()
- 立即中止事务,以便丢弃所有待处理的更改。回滚后,不再有一个与当前线程关联的事务。
- setRollbackOnly()
- 修改当前事务的状态,以便回滚是唯一可能的结果,但还没有执行回滚。
- getStatus()
返回当前事务的状态,可以是以下整数值之一,如
javax.transaction.Status
接口中定义的:-
STATUS_ACTIVE
-
STATUS_COMMITTED
-
STATUS_COMMITTING
-
STATUS_MARKED_ROLLBACK
-
STATUS_NO_TRANSACTION
-
STATUS_PREPARED
-
STATUS_PREPARING
-
STATUS_ROLLEDBACK
-
STATUS_ROLLING_BACK
-
STATUS_UNKNOWN
-
- setTransactionTimeout()
- 自定义当前事务的超时,以秒数为单位。如果在指定超时内没有解决事务,则事务管理器会自动回滚。