要在 IMS TM 中运行非响应方式事务,Java™ 应用程序将执行 SYNC_SEND 交互。对于交互的 execute 方法所使用的 IMSInteractionSpec 对象,应用程序为其 interactionVerb 属性提供的值是 SYNC_SEND,为其 commitMode 属性指定的值是 0。
如果 Java 客户机应用程序发出一个 SYNC_SEND 交互,IMS TM 资源适配器就会通过 IMS Connect 向 IMS 发送请求,但是不会期望来自 IMS 的响应。由于 IMS TM 资源适配器与 IMS 之间执行的是“仅发送”交互,因此通常将 SYNC_SEND 交互用于无响应方式事务。
要使用 SYNC_SEND 交互来运行事务,对于 execute 方法所使用的 IMSInteractionSpec 对象,应用程序必须为其 interactionVerb 属性提供值 SYNC_SEND,为其 commitMode 属性提供值为 0。根据所使用的持久套接字类型(可共享或专用)和运行的 IMS 事务类型的不同,SYNC_SEND 交互处理会有所不同。
如果 IMS 的一个事务定义为无响应方式,则与该事务相关联的 IMS 应用程序通常不会将输出消息插入 I/O PC;因此,不会创建输出消息,也没有任何输出消息在 TPIPE 上排队。
如果 IMS 应用程序与对 IMS 定义的事务相关联,并且该事务被定义为响应方式事务,则该应用程序通常会将输出消息插入至 I/O PCB。因为 IMS TM 资源适配器并不期望来自 SYNC_SEND 交互的响应,所以,如果插入了输出消息,就会在名称为已生成的 clientID 的 TPIPE 上对输出消息排队。但是,如果在执行 SYNC_SEND 交互之后执行 SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT 或 SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT 交互,并且是在同一个应用程序和同一个连接上执行这些交互的,则可以使用后面这两种交互来检索响应。
如果 IMS 的一个事务定义为响应方式,则与该事务相关联的 IMS 应用程序通常不会将输出消息插入 I/O PCB,因此,不会创建输出消息,也没有任何输出消息在 TPIPE 上排队。
如果 IMS 的一个事务定义为无响应方式,则与该事务相关联的 IMS 应用程序通常会将输出消息插入 I/O PCB 中。因为 IMS TM 资源适配器并不期望来自 SYNC_SEND 交互的响应,所以,如果插入了输出消息,就会在 TPIPE 上对输出消息排队,该 TPIPE 具有为该交互的 clientID 提供的名称。可以通过发出 SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT 或 SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT 交互来检索排队至这种类型的 TPIPE 的消息。TPIPE 名称就是为 SYNC_SEND 交互指定的 clientID。对于使用专用持久套接字连接的交互必须提供 clientID。