第 5 章 使用 Narayana 事务管理器


本节通过实施 javax.transaction.UserTransaction 接口、org.springframework.transaction.PlatformTransactionManager 接口或 javax.transaction.Transaction 接口来使用 Narayana 事务管理器的详细信息。您选择使用哪个接口取决于应用程序的需求。在本章的结尾处,可以讨论列出 XA 资源的问题解决办法。该信息组织如下:

有关 Java 事务 API 详情,请查看 Java Transaction 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 接口定义了以下方法:

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()
自定义当前事务的超时时间,以秒为单位指定。如果在指定的超时时间内没有解决事务,事务管理器会自动回滚。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.