ECI Interaction Spec

InteractionSpec 类是特定于 CICS 的类,用来管理 Java 客户机应用程序与 CICS 之间的交互。

J2C 应用程序使用“交互”接口链接至服务器程序。ECI 资源适配器提供了“交互”接口的实现,但是应用程序不直接使用此接口;应用程序将使用 ECIInteractionSpec 类来定义交互的属性:

  1. 对于异步调用,它将 InteractionVerb 设置为 SYNC_SEND;而对于同步调用,它将 InteractionVerb 设置为 SYNC_SEND_RECEIVE。可使用 SYNC_RECEIVE 来检索异步调用产生的应答。
    注:
    • 当使用特定 ECIInteraction 对象的 execute() 方法发出了 SYNC_SEND 调用时,直到执行了 SYNC_RECEIVE,ECIInteraction 的实例才能执行另一个 SYNC_SEND 或 SYNC_SEND_RECEIVE。
    • 允许同时对同一个连接执行多个异步调用,前提是不会导致两个异步调用在同一个事务作用域内都处于未完成状态。如果发生这种情况,就会抛出 LocalTransactionException。
    • 如果您正在以本地方式将适配器与 WebSphere Application Server for z/OS 配合使用,并且您需要事务支持,则指定 SYNC_SEND_RECEIVE 交互类型。如果使用 SYNC_SEND 和 SYNC_RECEIVE 发出异步请求,则将以返回时同步的方式发出 ECI 请求,并且将在当前全局事务作用域外部发出。在远程方式下,也能正常地进行异步调用。
      • 将 CommareaLength 属性设置为传递给 CICS 的 COMMAREA 的长度。如果未提供该值,则会使用缺省值:
        • SYNC_SEND 和 SYNC_SEND_RECEIVE - 输入记录数据的长度
        • SYNC_RECEIVE - ReplyLength 的值
      • 将 ReplyLength 属性设置为要从网关守护程序返回至 J2C 应用程序的数据流的长度。这样做可以减少网络中传输的数据量,但是,前提是由 CICS 返回的数据少于整个 COMMAREA 大小,并且您预先知道数据的大小。JCA 应用程序仍然将接收整个 COMMAREA,其大小是在 CommareaLength 中指定的;只是通过网络发送的数据量减少了。这种方法相当于可用于 ECIRequest 类的 setCommareaInboundLength() 方法。如果未设置 ReplyLength,“CICS 事务网关”就会自动去掉从网关守护程序发送至 J2C 应用程序的 COMMAREA 中的结尾零,而不必预先知道数据的大小。

对于 ECIConnectionSpec,可以在构造时或者使用 setter 设置 ECIInteractionSpec 类的属性。与 ECIConnectionSpec 不同的是,ECIInteractionSpec 类已设计为 Java bean。因此,在受管环境中,服务器可能提供了一些工具以允许您使用 GUI 而无须编写任何代码来定义这些属性。

要执行 ECI 超时值,应将 ECIInteractionSpec 类的 ExecuteTimeout 属性设置为 ECI 超时值。允许使用的值包括:

如果您正在 z/OS 上使用“CICS 事务网关”,则不能指定 ECI 超时值。作为一种替代方法,可以在 EXCI 选项表 DFHXCOPT 中设置 TIMEOUT 参数。

使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.