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.