![[z/OS]](../images/ngzos.gif)
正在处理的工作和假定的异常终止方式
当分布式事务开始落实之前发生故障时,假定异常中止方式将被激活。
如果您的分布式事务跨几台服务器,那么与该工作有关的资源管理器可能会保持事务锁定。在分布式事务开始落实之前如果发生故障,那么产品和资源管理器进入假设异常终止方式。在此方式中,资源管理器回滚事务。
- 发生故障时,因正在运行工作的服务器的不同,服务器故障或通信故障的影响不同。
- 可能需要 OTS 超时来回滚分布式事务树的下级分支。
示例:一种常见情况是:服务器 B Web 客户机在同一台服务器中驱动会话 Bean。在服务器 C 和 D 中,该会话 Bean 已执行了针对实体 Bean 的工作。所有服务器都与同一分布式全局事务有关。当
会话 Bean 处于未完成状态(意味着它还未开始落实)时,服务器 B 突然发生故障。服务器
C 和 D 正在等待更多工作或开始两阶段落实协议,但在此状态时,资源管理器可能还保持事务锁定。因此,服务器角色如下所示:
- 服务器 A:执行的 Servlet/JavaServer Page
- 服务器 B:访问的会话 Bean
- 服务器 C:访问的实体 Bean
- 服务器 D:访问的实体 Bean
当涉及本地资源管理器时,RRS 将确保调用它们以执行假定异常终止处理。当执行恢复时,RRS 将使用资源管理器来确保正确执行恢复。当工作处于未完成状态时如果发生故障,那么 RRS 将指示本地 UR 涉及的资源管理器回滚。
产品总是假设要执行恢复。每次服务器启动时,将根据运行方式执行一些不同的操作。
- 如果服务器以重新启动/恢复方式运行,那么产品将检查是否需要任何恢复。如果需要恢复,那么产品将尝试完成恢复,并且成功恢复或终止。
- 如果服务器正常运行,那么重新启动/恢复事务不一定要在服务器进行新工作之前完成。一旦服务器确定重新启动工作的内容,就会开始接受新工作项。重新启动/恢复事务的处理与新工作项的处理一起继续进行。