Sun Java System Application Server Enterprise Edition 8.1 2005Q2 管理指南

第 11 章 事务

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

关于事务

什么叫事务?

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

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

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

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

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

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

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

J2EE 技术中的事务

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

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

有关事务的管理控制台任务

Application Server 基于管理控制台中的设置处理事务。

配置事务

本节说明如何配置事务设置:

有关事务的其他信息,请参见下列各节:

Procedure配置 Application Server 从事务中恢复的方式

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

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

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

  1. 在树组件中,选择“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请选择该实例的配置节点。例如,对于默认实例 server,请选择 server-config 节点。

    • 要配置所有实例的默认设置,请选择 default-config 节点。

  3. 选择“事务服务”节点。

  4. 要启用恢复未完成事务的操作,请在“重新启动时”字段中选取“恢复”。

  5. 在“重试超时”字段中,设置 Application Server 尝试连接无法访问的服务器的时间值(以秒为单位)。默认值为 10 分钟(600 秒)。

  6. 在“试探性决定”字段中,为事务中无法访问的服务器设置策略。

    除非有充分的理由将此字段设置为“提交”,否则请将“试探性决定”保留设置为“回滚”。提交不确定的事务会破坏应用程序的数据完整性。

  7. 单击“保存”。

  8. 重新启动 Application Server。

Procedure设置事务超时值

默认情况下,服务器不会使事务超时。即,服务器无限期地等待事务完成。如果为事务设置了超时值,而事务在配置的时间内未完成,则 Application Server 将回滚此事务。

  1. 在树组件中,选择“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请选择该实例的配置节点。例如,对于默认实例 server,请选择 server-config 节点。

    • 要配置所有实例的默认设置,请选择 default-config 节点。

  3. 选择“事务服务”节点。

  4. 在“事务超时”字段中,输入事务超时之前等待的秒数。

    事务超时的默认值为 0 秒。此值禁用事务超时。

  5. 单击“保存”。

  6. 重新启动 Application Server。

Procedure设置事务日志的位置

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

  1. 在树组件中,选择“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请选择该实例的配置节点。例如,对于默认实例 server,请选择 server-config 节点。

    • 要配置所有实例的默认设置,请选择 default-config 节点。

  3. 选择“事务服务”节点。

  4. 在“事务日志位置”字段中输入事务日志的位置。

    创建 tx 子目录,事务日志将保存在该目录下。

    默认值为${com.sun.aas.instanceRoot}/logs${com.sun.aas.instanceRoot} 变量为实例的名称,且在启动 Application Server 实例时设置。要查看 ${com.sun.aas.instanceRoot} 值,请单击“实际值”。

  5. 单击“保存”。

  6. 重新启动 Application Server。

Procedure设置密钥点间隔

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

  1. 在树组件中,选择“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请选择该实例的配置节点。例如,对于默认实例 server,请选择 server-config 节点。

    • 要配置所有实例的默认设置,请选择 default-config 节点。

  3. 选择“事务服务”节点。

  4. 在“密钥点间隔”字段中,输入密钥点操作之间的事务数量。

    默认值为 2048。

  5. 单击“保存”。

  6. 重新启动 Application Server。