Sun Java System Application Server Enterprise Edition 8.1 管理指南 2005Q1 |
第 16 章
事务通过将一个或多个步骤装入不可分的工作单元,事务可确保数据的完整性和一致性。本章包括以下几个部分:
关于事务什么叫事务?
事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。例如,将资金从支票帐户转到储蓄帐户中是一项事务,按步骤如下进行:
如果这些步骤的任何一个步骤失败,则必须撤消在前面的步骤中所做的所有更改,而且支票帐户和储蓄帐户的状态必须与它们在事务开始之前的状态相同。该事件称为回滚。如果所有步骤都成功完成,则该事务处于提交状态。事务以提交或回滚结束。
J2EE 技术中的事务
J2EE 技术中的事务处理包括以下五个参与者:
通过实现各自的 API 和功能,每个实体均有助于提高事务处理的可靠性,如下所述:
- 事务管理器提供了支持事务划分、事务资源管理、同步和事务上下文传播所需的服务和管理功能。
- Application Server 提供了支持应用程序运行时环境(包含事务状态管理)所需的基础结构。
- 应用程序可以使用资源管理器(通过资源适配器)访问资源。资源管理器通过实现事务管理器所使用的事务资源接口来参与分布式事务,从而就事务关联、事务完成及恢复工作等过程进行通信。例如,关系型数据库服务器就是这样的资源管理器。
- 资源适配器是一个系统级的软件库,应用程序服务器或客户机可使用它连接到资源管理器。资源适配器通常专用于资源管理器。它以库的形式存在,并在使用它的客户机地址空间中使用。例如,JDBC 驱动程序就是这样的资源适配器。
- 为在应用程序服务器环境中运行而开发的事务用户应用程序可以使用 JNDI 查找事务数据源及事务管理器(可选)。应用程序可以使用企业 Bean 的声明事务属性设置或明确的程序事务分界。
有关事务的管理控制台任务Application Server 将基于管理控制台中的设置来处理事务。
配置事务
本节说明了配置以下事务属性的过程:
事务恢复
由于服务器崩溃或资源管理器崩溃,事务可能未完成。完成这些出现问题的事务并从故障中恢复是至关重要的。Application Server 可在服务器启动时从这些故障中恢复并完成事务。
执行恢复操作时,如果无法访问某些资源,则服务器重新启动操作可能被延迟,因为服务器正在尝试恢复事务。
如果事务跨服务器进行,启动该事务的服务器会联系其他服务器以获得事务的结果。如果无法访问其他服务器,则该事务将使用“试探性决定”字段来确定结果。
要配置 Application Server 从事务中恢复的方法,请执行以下步骤:
事务超时
默认情况下,服务器不会使事务超时。即,服务器无限期地等待事务完成。如果为事务设置了超时值,而事务在配置的时间内未完成,则 Application Server 将回滚此事务。
要设置超时值,请执行以下步骤:
事务日志记录
为了保持被调用资源的数据完整性,同时为了能够从故障中恢复,事务日志将记录有关每个事务的信息。事务日志保存在“事务日志位置”字段指定的目录的
tx
子目录中。用户无法读取这些日志。要设置事务日志的位置,请执行以下步骤:
密钥点操作可以压缩事务日志文件。密钥点间隔是日志中密钥点操作之间的事务数量。密钥点操作可以减小事务日志文件的大小。密钥点间隔数越大(例如,2048),事务日志文件也越大,但密钥点操作较少,性能可能更佳。密钥点间隔越小(例如,256),日志文件也越小,而同时由于密钥点操作较为频繁,性能会略微降低。
要设置密钥点间隔,请执行以下步骤: