WebSphere Application Server 中的事务支持
WebSphere® Application Server 中的事务服务提供了对事务的支持。应用程序使用事务的方式取决于应用程序组件的类型。
事务是一个活动单元(作为一个不可分的工作单元),在该单元中可以自动对资源进行多次更新,以便所有的更新是永久的,或没有一个更新是永久的。例如,在处理 SQL COMMIT 语句期间,数据库管理器原子地将多个 SQL 语句落实到关系数据库。在这种情况下,事务完整地包含在数据库管理器中并可以认作资源管理器局部事务 (RMLT)。在某些上下文中,事务是指逻辑工作单元 (LUW)。如果事务包括多个资源管理器(例如,多个数据库管理器),那么需要外部事务管理器来协调这些单个的资源管理器。跨多个资源管理器的事务被称为全局事务。WebSphere Application Server 是事务管理器,可以协调全局事务,可以参与收到的全局事务,也可以提供能运行资源管理器局部事务的环境。
- 会话 Bean 既可以使用容器管理的事务(其中 Bean 将事务的管理委派给容器),也可以使用 Bean 管理的事务(组件管理的事务,其中 Bean 自己管理事务)。
- 实体 Bean 使用容器管理的事务。
- Web 组件 (Servlet) 和应用程序客户机组件使用组件管理的事务。
WebSphere Application Server 是事务管理器,支持通过 XAResource 接口来协调资源管理器,以及与支持 CORBA 对象事务服务 (OTS) 协议或 Web Service 原子事务 (WS-AtomicTransaction) 协议的事务管理器一起参与分布式全局事务。WebSphere Application Server 也参与通过 Java™ EE Connector 1.5 资源适配器导入的事务。当不需要分布式事务协调时,还可以通过 WebSphere 应用程序的局部事务支持将这些应用程序配置为与数据库、JMS 队列和 JCA 连接器进行交互。
除了支持协调基于 XAResource 的资源管理器外,WebSphere Application Server for z/OS® 还支持通过 RRS(z/OS 资源恢复服务)来协调资源管理器。符合 RRS 的资源管理器包括 DB2®、WebSphere MQ、IMS™ 和 CICS®。IBM® WebSphere Application Server for z/OS 可以协调 RRSTransactional 资源管理器和具备 XA 功能的资源管理器在同一个全局事务下混合使用。
提供事务支持的资源管理器可以被分类成那些支持两阶段协调(通过提供 XAResource 接口或通过支持中的 RRS)的资源管理器和那些仅支持一阶段协调(例如,通过 LocalTransaction 接口)的资源管理器。WebSphere Application Server 事务支持可以在一个事务中为任何数量的具备两阶段功能的资源管理器提供协调。它还使单个具有一阶段能力的资源管理器能在缺少任何其他资源管理器的情况下在事务中使用,尽管在这种情况下,WebSphere 事务不是必需的。
提供事务支持的资源管理器可以被分成支持两阶段协调(通过提供 XAResource 接口)的资源管理器和仅支持一阶段协调(例如,通过 LocalTransaction 接口)的资源管理器。WebSphere Application Server 事务支持可以在一个事务中为任何数量的具备两阶段功能的资源管理器提供协调。它还使单个具有一阶段能力的资源管理器能在缺少任何其他资源管理器的情况下在事务中使用,尽管在这种情况下,WebSphere 事务不是必需的。
- 仅有一个一阶段落实资源提供程序参与事务,且参与此事务的所有两阶段落实资源提供程序都以只读方式使用。在这种情况下,两阶段落实资源在两阶段落实中的准备阶段都进行只读表决。由于一阶段落实资源提供程序是唯一完成所有更新的提供程序,因此一阶段落实资源不需要进行准备。
- 仅有一个一阶段落实资源提供程序与一个或多个两阶段落实资源提供程序一起参与事务,并且启用最后参与者支持。最后参与者支持实现了在同一全局事务中将一个可以一阶段落实的资源与任意个可以两阶段落实的资源配合使用。有关最后参与者支持的更多信息,请参阅在同一事务中使用一阶段和两阶段落实资源。
ActivitySession 服务提供由全局事务上下文提供的备用工作单元 (UOW) 范围。它是个可以用于协调多个一阶段资源管理器的分布式上下文。WebSphere EJB 容器和部署工具支持 ActivitySessions 作为 Java EE 编程模型的扩展。 企业 Bean 可以作为备用的事务上下文与受 ActivitySession 上下文影响的生存期一起部署。然后,应用程序可以在限于客户机范围的 ActivitySession 时期(而不仅仅是 EJB 方法的持续时间内)与资源管理器进行交互,并且由 ActivitySession 指示资源管理器的局部事务结果。有关 ActivitySession 的更多信息,请参阅使用 ActivitySession 服务。
您可以使用事务类对客户机工作负载分类以进行工作负载管理。工作负载是针对不同服务方区域的不同 WebSphere 事务,每个事务的目标均由相应的服务类定义。在服务方区域进程中,每个事务在其自己拥有的 WLM 相关可调度单元组中分派事务,并且每个事务的管理是根据其服务类的目标所决定的。服务器控制器使用与客户机请求关联的相关可调度单元组来管理工作的优先级,工作负载管理将此服务器控制器视为队列管理器。如果工作具有高优先级,那么工作负载管理可以将工作导向到服务器中高优先级服务方。如果工作具有低优先级,那么工作负载管理可以将工作导向到低优先级服务方。其作用是在同一服务器中根据优先级来区分工作。