21.2. 事务管理

21.2.1. 浏览并管理事务

管理 CLI 有浏览和操纵事务记录的功能。这个功能是通过事务管理者和 JBoss EAP 6 的管理 API 交互作用来提供的。
事务管理者将每个待定事务和涉及的参与者的信息存储在一个名为对象库(object store)的持久性存储里。管理 API 将对象库作为名为 log-store 的资源开放。名为 probe 的 API 操作读取事务日志并为每个日志创建一个节点。每当您需要刷新 log-store 时,您都可以手动调用 probe 命令。事务日志快速出现和消失都是正常的。

例 21.1. 刷新日志库

这个命令刷新了在受管域里使用配置集 default 的服务器组的日志库。对于独立服务器,请从命令里删除 profile=default
/profile=default/subsystem=transactions/log-store=log-store/:probe

例 21.2. 查看所有 Prepared 事务

要查看所有 Prepared 事务,首先请刷新日志库(请参考 例 21.1 “刷新日志库”),然后运行下列命令(功能类似于文件系统的 ls 命令)。
ls /profile=default/subsystem=transactions/log-store=log-store/transactions
这会展示每个事务及其唯一的标识符。可对单独的事务执行单独的操作(请参考 管理事务)。

管理事务

查看事务的属性。
要查看事务的信息,如 JNDI 名称、EIS 产品名和版本或状态,请使用 :read-resource CLI 命令。
/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9:read-resource
查看事务的参与者。
每个事务日志都包含一个名为 participants 的子元素。对这个元素使用 read-resource CLI 命令来查看事务的参与者。参与者是通过它们的 JNDI 名称来标识的。
/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9/participants=java\:\/JmsXA:read-resource
结果可能类似于:
{
   "outcome" => "success",
   "result" => {
       "eis-product-name" => "HornetQ",
       "eis-product-version" => "2.0",
       "jndi-name" => "java:/JmsXA",
       "status" => "HEURISTIC",
       "type" => "/StateManager/AbstractRecord/XAResourceRecord"
   }
}
这里显示的结果状态是 HEURISTIC 且符合恢复的条件。详情请参考 恢复事务。
删除事务。
每个事务日志都支持 :delete 操作来删除代表事务的事务日志。
/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9:delete
恢复事务。
每个事务都支持通过 :recover CLI 命令进行恢复。

恢复启发式事务和参与者

  • 如果事务的状态是 HEURISTIC,恢复操作会修改其状态为 PREPARE 并触发恢复。
  • 如果事务的其中一个参与者是启发式的,恢复操作会试图重新执行 commit 操作。如果成功,参与者将从事务日志里删除。您可以通过在 log-store 上重新运行 :probe 并检查参与者是否不再列出来验证这一点。如果这是最后一个参与者,事务也会被删除。
刷新需要恢复的事务的状态。
如果事务需要恢复,在进行恢复之前,您可以使用 :refresh CLI 命令确定它仍要求恢复。
/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9:refresh
查看事务子系统的统计信息

如果启用了事务管理者(Transaction Manager,TM)统计,您可以查看事务管理者和事务子系统的统计信息。关于如何启用 TM 统计的信息,请参考 第 21.1.2 节 “配置事务管理者”

您可以用管理控制台或管理 CLI 查看统计信息。在管理控制台里,你可以通过 RuntimeStatusSubsystemsTransactions 进行查看。对于受管域里的每台服务器,事务统计信息都是是可用的。要查看不同服务器的状态,请在左侧的菜单里选择 Change Server,然后从列表里选择服务器。
下表展示了每个可用的统计信息、描述和查看统计信息的 CLI 命令。

表 21.4. 事务子系统的统计信息

统计内容 描述 CLI 命令
Total
服务器上事务管理者处理的事务总数。
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-transactions,include-defaults=true)
Committed
服务器上事务管理者提交的事务总数。
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-committed-transactions,include-defaults=true)
Aborted
服务器上事务管理者中止的事务总数。
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-aborted-transactions,include-defaults=true)
Timed Out
服务器上事务管理者处理的超时事务总数。
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-timed-out-transactions,include-defaults=true)
Heuristics
在管理控制台里不可用。处于 heuristic 状态的事务的数量。
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-heuristics,include-defaults=true)
In-Flight Transactions
在管理控制台里不可用。已经开始但还未终止的事务的数量。
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-inflight-transactions,include-defaults=true)
Failure Origin - Applications
故障来源是应用程序的失败事务的数量。
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-application-rollbacks,include-defaults=true)
Failure Origin - Resources
故障来源是资源的失败事务的数量。
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-resource-rollbacks,include-defaults=true)