下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

利用J2EE Connector Architecture(8)

作者:课课家教育     来源: http://www.kokojia.com点击数:763发布时间: 2016-01-29 18:41:18

标签: java敏捷开发java网络开发java学习课程

大神带你学编程,欢迎选课

  如何链接到发出 SYNCPOINT 命令的 CICS 程序?

  发出 SYNCPOINT 命令(带有或不带有回滚选项)的 CICS 程序不能从属于另一个事务管理器,因此它也不能成为扩展或全局事务的一部分。此事务管理器可以是发出 DPL 请求的另一个 CICS 系统,在我们的示例中是向 CICS ECI 资源适配器发送 CCI 请求的 webSphere application Server 事务管理器。此限制的原因是链接的程序在全局事务中是有效的资源管理器,并且只有事务管理器(初始调用方)可以控制事务协调。

利用J2EE Connector Architecture(8)_java敏捷开发_java网络开发_课课家

  因此,要链接到发出 SYNCPOINT 命令的 CICS 程序,必须在 LINK 命令上指定 SYNCONRETURN;这意味着 CICS 服务器程序将在独立于客户机的本身的工作单元中运行。通过将 CICS ECI 资源适配器与 WebSphere Application Server 结合使用,可以动态地控制在 CCI 调用上使用 SYNCONRETURN 行为。对于来自 Web 容器中 Servlet 的调用,带有 SYNCONRETURN 的 LINK 是缺省的请求行为(请参见问题 1),而在 EJB 容器中,可以通过在 EJB 事务属性上定义非事务属性(如 Never)来利用容器,如表 2 所示。

  使用此 SYNCONRETURN 选项非常有用,因为通过远程事务管理器(在我们的示例中是 WebSphere Application Server)它可以从任何事务控制中释放 CICS 程序,并将事务的结果指派给 CICS。出于应用程序设计原因,这有时是非常必要的,只要 CICS 本身在管理所有可恢复的更新(如通过 CICS/DB2 或 CICS/VSAM 进行的更新),仍可以维护 CICS 中的事务完整性。

  部署到 EJB 容器

  WebSphere Application Server 中的 EJB 容器完美地适合于事务组件的部署,并且提供对容器和 Bean 管理事务两者的支持。容器管理的事务具有这样的优势:J2EE 服务器执行所有的事务协调,而用程序开发者可以集中精力开发业务逻辑而不是事务逻辑。为了控制事务组件的行为,EJB 容器提供了一组用于控制容器管理组件的事务行为的属性。在这一部分中,我们将介绍这些属性并且阐释如何与 CICS ECI 资源适配器一起使用它们。

  在同一事务范围内,EJB 组件能否发出多个 ECI 请求?

  事务属性和事务上下文的初始存在都会影响 ECI 调用类型和对 CICS 调用最后得到的事务范围。表 2 描述了 CICS 镜像任务最后所得到的 ECI 调用类型和事务范围。长时间运行的 CICS 镜像任务需要 CICS 中扩展的工作单元,尽管 synconreturn 选项的镜像任务意味着 CICS 事务运行在相对于 EJB 组件的上下文而言独立的事务上下文,并在各个 ECI 调用结束后镜像任务终止。

  表 2. EJB 事务属性的 ECI 调用类型

  属性ECI 调用类型CICS 镜像任务事务范围

  NotSupported非扩展Synconreturn

  RequiredXA 事务长时间运行

  RequiresNewXA 事务长时间运行

  Supports依赖于现在的上下文;Bean 方法可以在调用方的事务上下文下执行,并且 ECI 调用使用 XA 事务,如果该上下文不存在,则在未指定的事务上下文下执行。如果在未指定的事务上下文下执行,则 LTC 设置将控制最后得到的 ECI 调用类型。(请参阅本地事务容器。)Synconreturn 或长时间运行

  MandatoryXA 事务或抛出异常;在调用方的事务上下文下执行 Bean 方法。如果调用程序没有提供上下文(换句话说没有全局活动),则执行将失败并抛出异常。如果存在全局事务活动,则 ECI 调用类型将使用 XA 事务。长时间运行

  Never非扩展Synconreturn

  怎样发出对全局事务的 CICS 部分的 ECI 请求?

  有四个方法可以实现此结果,具体取决于应用服务器环境,以及是否存在参与全局事务的任何其他具有 XA 能力的资源管理器。

  可以利用 CICS TG for z/OS V6.1 的 XA 支持在任何数量的 CICS 区域和其他兼容 XA 的资源之间提供全局事务支持。可以在任何 WebSphere Application Server V6 配置中使用 CICS ECI XA 资源适配器。

  可以利用 WebSphere Application Server for z/OS 中的 RRS 全局事务支持在任何数量的 CICS 区域和其他兼容 XA 或 RRS 的资源管理器之间提供全局事务支持。此功能基于 RRS,需要在同一 z/OS 系统上使用 CICS、CICS TG 和 WebSphere Application Server,并适用于 WebSphere Application Server for z/OS 和 CICS TG for z/OS 所有支持的版本。

  如果在事务中没有调用具有 XA 能力的资源管理器(如 JDBC 数据源),那么可以在全局事务中使用 CICS ECI 资源适配器的本地事务支持。该方法是可行的,因为全局事务提供一个对两阶段提交协议的单阶段优化,在优化中,如果在事务中仅有一个资源管理器分支(也是就说,仅有单个资源),那么事务管理器使用单阶段提交流。有时,该方法被称为“唯一的代理优化”尽管该方法是主要的性能优化方法,但这意味着在不需要被准备的全局事务中可能支持单一的单阶段提交资源管理器(例如使用 CICS ECI 资源适配器的连接)。

赞(13)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程