12.8. XA 数据源恢复

XA 数据源是可参与 XA 全局交易的数据源,由交易经理协调,并可在单个交易中跨越多个资源。如果其中一位参与者未能提交更改,则其他参与者中止交易并恢复交易发生前的状态。这是为了保持一致性,避免潜在的数据丢失或损坏。

XA 恢复是一个确保更新或回滚受交易影响的所有资源的过程,即使任何资源或交易参与者崩溃或不可用。XA 恢复发生,无需用户干预。

每个 XA 资源都需要关联一个恢复模块及其配置。恢复模块是执行恢复时执行的代码。JBoss EAP 自动注册 JDBC XA 资源的恢复模块。如果要实施自定义恢复代码,您可以使用 XA 数据源注册自定义模块。恢复模块必须扩展类 com.arjuna.ats.jta.recovery.XAResourceRecovery

12.8.1. 配置 XA 恢复

对于大多数 JDBC 资源,恢复模块自动与资源关联。在这些情况下,您只需要配置允许恢复模块连接到资源以执行恢复的选项。

下表描述了特定于 XA 恢复的 XA 数据源参数。这些配置属性可以在数据源创建期间或之后设置。您可以使用管理控制台或管理 CLI 进行设置。有关配置 XA 数据源的详情,请参阅修改 XA 数据源。

表 12.2. XA 恢复的数据源参数

属性描述

restore-username

用于连接资源以进行恢复的用户名。请注意,如果没有指定,将使用数据源安全设置。

restore-password

用于连接资源以进行恢复的密码。请注意,如果没有指定,将使用数据源安全设置。

recovery-security-domain

用于连接资源以进行恢复的安全域。

recovery-plugin-class-name

如果需要使用自定义恢复模块,将此属性设置为模块的完全限定类名称。模块应扩展类 com.arjuna.ats.jta.recovery.XAResourceRecovery

recovery-plugin-properties

如果您使用需要设置属性的自定义恢复模块,请将此属性设置为属性的逗号分隔 KEY=VALUE 对的列表。

禁用 XA 恢复

如果多个 XA 数据源连接到同一物理数据库,则通常只需要为其中一个配置 XA 恢复。

使用以下命令来禁用 XA 数据源的恢复:

/subsystem=datasources/xa-data-source=XA_DATASOURCE_NAME:write-attribute(name=no-recovery,value=true)