快速业务通道

利用J2EE Connector Architecture - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
EJB 容器的事务控制(请参见问题 3),第二个方法是以编程方式创建并控制 Bean 管理的事务 (BMT) 的事务范围。通过任何版本的 CICS Transaction Gateway 并使用连接工厂的本地事务支持可以完成此操作,如下面的代码示例所示:

Context ic = new InitialContext(); cxfn = (ConnectionFactory) ic.lookup("java:comp/env/eis/ECICICS"); Connection cxn= cxnf.getConnection(); Interaction ixn= cxn.createInteraction(); ECIInteractionSpec ixnSpec= new ECIInteractionSpec(SYNC_SEND_RECEIVE,"CICSPROG"); JavaStringRecord jsr = new JavaStringRecord() LocalTransaction tran = cxn.getLocalTransaction(); tran.begin(); jsr.setText("DATA1"); ixn.execute(ixnSpec, jsr, jsr); ... jsr.setText("DATA2"); ixn.execute(ixnSpec, jsr, jsr); ... tran.commit(); ixn.close(); cxn.close();

当控制这样一组交互时,事务上下文对于 Connection 对象而言是本地的,因此对于基础的 ConnectionFactory 和它引用的 CICS 区域而言也是本地的。只要多个请求都在相同的 CICS 上启动,并通过相同的 CICS Transaction Gateway 访问,就可以对 CICS 发出多个请求。

如果需要对多个资源管理器(如两个不同的 CICS 系统)进行更新,则需要全局事务上下文。这有必要使用 CICS ECI XA 资源适配器和 CICS Transaction Gateway V6.1 for z/OS。必须使用 Java Transaction API 和 UserTransaction 接口控制 BMT,该接口可以提供跨多个连接的必要 XA 事务支持(如果需要)。

try { Context ic = new InitialContext(); utx = (UserTransaction) ic.lookup("java:comp/UserTransaction"); cxfn = (ConnectionFactory) ic.lookup("java:comp/env/eis/ECICICS"); utx.begin(); Connection cxn= cxnf.getConnection(); Interaction ixn= cxn.createInteraction(); ECIInteractionSpec ixnSpec= new ECIInteractionSpec(SYNC_SEND_RECEIVE,"CICSPROG"); JavaStringRecord jsr = new JavaStringRecord() jsr.setText("DATA1"); ixn.execute(ixnSpec, jsr, jsr); ... jsr.setText("DATA2"); ixn.execute(ixnSpec, jsr, jsr); utx.commit(); ... ixn.close(); cxn.close(); } catch (ResourceException re) { try { userTransaction.rollback(); }

利用J2EE Connector Architecture(8)

时间:2011-03-11 Phil Wakelin

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

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

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

使用此 SYNCONRETURN 选项非常有用,因为通过远程事务管理器(在我们的示

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号