5.3. 使用 Transaction 对象


如果您要暂停/恢复事务,或者需要明确列出资源,您可能需要直接使用 javax.transaction.Transaction 对象。如 第 5.4 节 “解决 XA enlistment 问题” 所述,框架或容器通常会自动处理资源。

5.3.1. Transaction 接口的定义

JTA Transaction 接口具有以下定义:

interface javax.transaction.Transaction {

    public void commit();

    public void rollback();

    public void setRollbackOnly();

    public int getStatus();

    public boolean enlistResource(XAResource xaRes);

    public boolean delistResource(XAResource xaRes, int flag);

    public void registerSynchronization(Synchronization sync);
}

5.3.2. Transaction 方法的描述

commit (), rollback (), setRollbackOnly (), 和 getStatus () 方法的行为与 UserTransaction 接口的对应方法相同。实际上,UserTransaction 对象是一个方便的打包程序,用于检索当前事务,然后在 Transaction 对象上调用对应的方法。

另外,Transaction 接口定义了以下方法,它在 UserTransaction 接口中没有对应的方法:

enlistResource()

将 XA 资源与当前事务相关联。

注意

这个方法是 XA 事务上下文中的关键重要。使用当前事务代表 XA 事务的功能,可以精确列出多个 XA 资源。另一方面,明确列出资源是微不足道的资源,您通常希望您的框架或容器为您完成此操作。例如,请参阅 第 5.4 节 “解决 XA enlistment 问题”

delistResource()

解除指定资源与事务相关的关联。flag 参数可以采用 javax.transaction.Transaction 接口中定义的以下整数值之一:

  • TMSUCCESS
  • TMFAIL
  • TMSUSPEND
registerSynchronization()
使用当前事务注册 javax.transaction.Synchronization 对象。Synchronization 对象仅在提交准备阶段之前收到回调,并在事务完成后接收回调。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.