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

客服QQ:3315713922

利用J2EE Connector Architecture(10)

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

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

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

  如果 CICS 区域或事务意外故障,会发生什么情况?

  XA 事务协议是一个假定的中止协议。这样,如果在事务处于处理状态时(即,在启动提交进程之前)发生任何故障,那么所有更新将回滚。这包括 CICS 子系统故障或网络中断。不过,对 CICS 异常终止的处理会略有不同。在 JCA 体系结构中,可以将任何故障(包括异常终止)作为 ResourceException 传播回调用 J2EE 组件。如果未捕获此异常,则缺省操作是提交事务(包括 CICS 执行的所有工作),直到异常终止点。如果您希望确保 CICS 事务异常终止触发自动回滚,则可以使用以下两种方法完成此任务:

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

  在 CICS TS V2 和更高版本中,更改了 EXCI 选项表 DFHXCOPT,其中包括新的选项 ABENDBKOUT={NO|YES}。此选项可以指定 CICS 事务异常终止是否应触发恢复的 RRS 单元的自动回滚,并强制执行在 CICS 工作单元中所进行的所有更新的回退。此选项是在 CICS TS V3.1 中作为 APAR PK17426 以及在 CICS TS V2.2 和 V2.3 中作为 APAR PK17427 引入的(此 APAR 只应用于 EXCI,因此仅适用于 z/OS 上的 CICS TG。)

  如果 J2EE 应用程序接收 ResourceException,则它可以检测该异常是否表示 CICS 事务异常终止,甚至可以确定特定的 CICS 异常终止代码是什么。检测到这种情况后,它就会在 EJB 会话上下文中将 EJB 的缺省操作标记为 setRollbackOnly,以强制事务管理器自动回滚事务。下面的代码示例说明了该方法:

  try {

  eciInt.execute(eSpec, jsr, jsr);

  } catch (ResourceException re) {

  if (re instanceof com.ibm.connector2.cics.CICSTxnAbendException )

  {

  System.err.println("CICS ABEND detected."+ " Connection Factory="+targetCF.toString());

  try {

  mySessionCtx.setRollbackOnly();

  } catch(IllegalStateException ise) {

  ise.printStackTrace();

  }

  结束语

  我们回顾了 webSphere application Server 和 CICS 提供的事务支持,并阐述了如何使用 CICS ECI 资源适配器提供两个环境之间的事务协调。此集成的关键是资源适配器和 J2EE 应用服务器之间的 JCA 事务管理契约。此契约受各种因素的影响,包括 Web 或 EJB 容器的使用、EJB 事务属性、LTC 设置以及带有 WebSphere Application Server 的 XA 或 RRS 的使用。

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