5.2. 使用 TransactionManager 对象


使用 javax.transaction.TransactionManager 对象的最常见方法是将它传递到框架 API,例如 Camel JMS 组件。这可让框架在您进行事务后查找。有时,您可能想要直接使用 TransactionManager 对象。当您需要访问高级事务 API(如 suspend()resume() 方法)时,这很有用。

5.2.1. TransactionManager 接口的定义

JTA TransactionManager 接口有以下定义:

interface javax.transaction.TransactionManager {

    // Same as UserTransaction methods

    public void begin();

    public void commit();

    public void rollback();

    public void setRollbackOnly();

    public int getStatus();

    public void setTransactionTimeout(int seconds);

    // Extra TransactionManager methods

    public Transaction getTransaction();

    public Transaction suspend() ;

    public void resume(Transaction tobj);
}

5.2.2. TransactionManager 方法的描述

TransactionManager 接口支持 UserTransaction 接口中找到的所有方法。您可以使用 TransactionManager 对象进行事务分离。另外,TransactionManager 对象支持这些方法:

getTransaction()
获取对当前事务的引用,这是与当前线程关联的事务。如果没有当前事务,此方法会返回 null
suspend()

将当前的事务从当前线程分离,并返回对事务的引用。调用此方法后,当前线程不再有事务上下文。此时您所做的所有工作都不会在事务上下文中不再执行。

注意

并非所有事务管理器都支持挂起事务。但是,Narayana 支持此功能。

resume()
将暂停的事务重新关联到当前线程上下文。在调用此方法后,事务上下文会被恢复,并在事务上下文中完成这个点后执行的所有工作。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.