Sun Java System Application Server Enterprise Edition 8.2 管理指南

第 11 章 事务

通过将一个或多个步骤包含在不可分的工作单元,事务可确保数据的完整性和一致性。本章包含以下各节:

什么叫事务?

事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所做的所有更改都会被撤消。例如,将资金从支票帐户转到储蓄帐户中是一项事务,按步骤如下进行:

  1. 检查支票帐户是否有足够的资金来支付此转帐操作。

  2. 如果支票帐户中有足够的资金,则将该笔资金记入此帐户的借方。

  3. 将这些资金记入储蓄帐户的贷方。

  4. 将此次转帐记录到支票帐户日志中。

  5. 将此次转帐记录到储蓄帐户日志中。

如果这些步骤的任何一个步骤失败,则必须撤消在前面的步骤中所做的所有更改,而且支票帐户和储蓄帐户的状态必须与它们在事务开始之前的状态相同。该事件称为回滚。如果所有步骤均成功完成,那么事务即处于已提交状态。事务以提交或回滚结束。

J2EE 技术中的事务

J2EE 技术中的事务处理包括以下五个参与者:

通过实现各自的 API 和功能,每个实体均有助于提高事务处理的可靠性,如下所述:

恢复事务

由于服务器崩溃或资源管理器崩溃,事务可能未完成。完成这些被搁置的事务并将其从故障中恢复至关重要。Application Server 旨在在服务器启动时从故障中恢复并完成这些事务。

执行恢复操作时,如果无法访问某些资源,则服务器重新启动操作可能被延迟,因为服务器正在尝试恢复事务。

如果事务跨服务器进行,启动该事务的服务器会联系其他服务器以获得事务的结果。如果无法访问其他服务器,则该事务将使用“试探性决定”字段来确定结果。

您可以使用管理控制台配置 Application Server 以恢复事务。有关执行此操作的详细过程,请参见管理控制台联机帮助。

事务超时值

默认情况下,服务器不会使事务超时。即,服务器无限期地等待事务完成。如果为事务设置了超时值,而事务在配置的时间内未完成,则 Application Server 将回滚此事务。有关执行此操作的详细步骤,请参见管理控制台联机帮助。

事务日志

为了保持被调用资源的数据完整性,同时为了能够从故障中恢复,事务日志将记录有关每个事务的信息。事务日志保存在“事务日志位置”字段指定的目录的 tx 子目录中。用户无法读取这些日志。

密钥点间隔

密钥点操作将压缩事务日志文件。密钥点间隔是日志中密钥点操作之间的事务数量。密钥点操作可以减小事务日志文件的大小。密钥点间隔数越大(例如,2048),事务日志文件也越大,但密钥点操作较少,性能可能更佳。密钥点间隔越小(例如,256),日志文件也越小,而同时由于密钥点操作较为频繁,性能会略微降低。