IMSInteractionSpec 属性

为 J2C Java Bean 定义 Java 方法时,必须为用来描述将由该 Java 方法执行的与 IMS™ 的交互的属性提供值。这些值是 IMSInteractionSpec 的输入属性的值。以下列表描述了 IMSInteractionSpec 的所有输出属性和输入属性,包括并不是由应用程序组件设置的那些属性:

asyncOutputAvailable
这是一种“仅输出”属性。在从专用持久套接字或可共享持久套接字上的落实方式 0 交互中返回时,Java™ 应用程序可以使用它来确定相关联的 clientID 是否存在已排队的输出。clientID 是 IMSConnectionSpec 的一种属性,它可以是用户指定的值,也可以是 IMS Connector for Java 生成的值。如果队列中存在消息,则 asyncOutputAvailable 的值为 true。应用程序组件不会在输入上设置 asyncOutputAvailable 属性。注意:如果 Java 应用程序使用此属性,则它必须表现为 IMSInteractionSpec 的输出属性。
convEnded
这是一种“仅输出”属性。Java 应用程序可以使用它来确定对话是否已结束(true)。应用程序组件不会在输入上设置 convEnded 属性。注意:如果 Java 应用程序使用此属性,则它必须表现为 IMSInteractionSpec 的输出属性。
commitMode
IMS 资源适配器使用此属性来指示要为 IMS 事务执行的落实方式处理的类型。有关更多信息,请参阅落实方式处理概述。当 interactionVerb 设置为 SYNC_SEND_RECEIVE 时,可以将 commitMode 属性设置为 0 或 1。当 interactionVerb 设置为 SYNC_RECEIVE_ASYNCOUTPUT、SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT、SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT 或 SYNC_SEND 时,IMS Connector for Java 将使用 commitMode 0。当 interactionVerb 设置为 SYNC_END_CONVERSATION 时,必须采用 commitMode 1。如果 commitMode 为 0,并且是将专用持久套接字用于交互,则必须为该交互提供 IMSConnectionSpec 的 clientID 属性。如果 commitMode 为 0,并且是将可共享持久套接字用于交互,则一定不能指定 clientID。如果为可共享持久套接字上的交互指定了 commitMode 0 或 1,则可以清除或重新路由事务产生的输出消息。在 interactionVerb 设置为 SYNC_RECEIVE_ASYNCOUTPUT、SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT 或 SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT 的情况下,可以使用同一应用程序中的后续交互来恢复输出消息。如果将专用持久套接字用于 commitMode 0 交互,则不能清除或重新路由事务中产生的输出消息,但是,在 interactionVerb 设置为 SYNC_RECEIVE_ASYNCOUTPUT、SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT 或 SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT 的情况下,可以使用后续交互来恢复输出消息。
socketTimeout
在断开套接字并将异常返回给客户机应用程序之前,IMS Connector for Java 等待来自 IMS Connect 的响应将花费的最长时间。socketTimeout 值是以毫秒表示的。要使用套接字超时,该值必须大于零。如果没有为交互指定套接字超时,或者为它提供了一个零毫秒的套接字超时值,这将导致没有套接字超时或者将无限等待。有关更多信息,请参阅套接字超时设置套接字超时值
executionTimeout
IMS Connect 将消息发送至 IMS,然后接收响应这一过程可以花费的最长时间。executionTimeout 值是以毫秒表示的,它必须是 -1 或者是 1 到 3,600,000 范围内的十进制整数(包含 1 和 3,600,000 在内)。即,executionTimeout 值必须大于零且小于或等于一小时。如果将此属性的值设置为 -1,则运行交互时将没有时间限制。有关更多信息,请参阅执行超时设置执行超时值有效的执行超时值
imsRequestType
指示 IMS 请求的类型并确定 IMS 资源适配器如何处理请求所产生的输出。整数值为:
IMSInteractionSpecProperties 中的命名常量 描述
1 IMS_REQUEST_TYPE_IMS_TRANSACTION 请求是一个 IMS 事务。IMS 返回的正常事务输出将用来填充应用程序的输出消息。如果 IMS 返回“DFS”消息,则 IMS 资源适配器将抛出 IMSDFSMessageException。

imsRequestType 的此值适用于不是使用 WebSphere® Studio MFS 支持生成的应用程序。

2 IMS_REQUEST_TYPE_IMS_COMMAND 请求是一个 IMS 命令。IMS 返回的命令输出(包括“DFS”消息)用来填充应用程序的输出消息。未抛出 IMSDFSMessageException。

imsRequestType 的此值适用于提交 IMS 命令的应用程序。

3 IMS_REQUEST_TYPE_MFS_TRANSACTION imsRequestType 的此值适用于使用 WebSphere Studio MFS 支持生成的应用程序。

IMS 返回的正常事务输出以及“DFS”消息用来填充应用程序的输出消息。未抛出 IMSDFSMessageException。

interactionVerb
Java 应用程序与 IMS 之间的交互方式。IMS 资源适配器当前支持的值包括:
IMSInteractionSpecProperties 中的命名常量 描述
0 SYNC_SEND IMS 资源适配器通过 IMS Connect 将客户机请求发送至 IMS,但是不会期望来自 IMS 的响应。对于 SYNC_SEND 交互,客户机不需要同步接收来自 IMS 的响应。SYNC_SEND 在可共享和专用持久套接字连接上都受支持,但是,只允许将它用于 commitMode 0 交互。如果 interactionVerb 设置为 SYNC_SEND,则会忽略执行超时值和套接字超时值。注意:imsRequest 类型 2 不允许 SYNC_SEND,并且将产生异常。
1 SYNC_SEND_RECEIVE 执行 IMS 交互时将请求发送至 IMS 并同步接收响应。典型的 SYNC_SEND_RECEIVE 交互是运行非对话式 IMS 事务,在这种事务中,将把输入记录(IMS 事务输入消息)发送至 IMS,并由 IMS 返回输出记录(IMS 事务输出消息)。SYNC_SEND_RECEIVE 交互还用于对话式 IMS 事务的迭代。对话式事务要求 commitMode 1。可以使用 commitMode 1 或 commitMode 0 来运行非对话式事务。如果在专用持久套接字上使用了 commitMode 0,则必须为 IMSConnectionSpec 的 clientID 属性提供值。如果在可共享持久套接字上使用了 commitMode 0,则一定不能为 IMSConnectionSpec 的 clientID 属性提供值。
3 SYNC_END_CONVERSATION 如果应用程序在 interactionVerb 设置为 SYNC_END_CONVERSATION 的情况下执行交互,则 IMS 资源适配器将发送一条消息来强制结束 IMS 对话式事务。

对于 SYNC_END_CONVERSATION,必须采用 commitMode 1。不允许提供 clientID。

4 SYNC_RECEIVE_ASYNCOUTPUT interactionVerb SYNC_RECEIVE_ASYNCOUTPUT 在可共享持久套接字连接和专用持久套接字连接上都有效。SYNC_RECEIVE_ASYNCOUTPUT 用来检索未传递的异步输出。当在专用持久套接字上使用 SYNC_RECEIVE_ASYNCOUTPUT 时,必须为 IMSConnectionSpec 的 clientID 属性提供值。

对于这种类型的交互,Java 客户机只能接收单条消息。如果发出请求时 clientID 的“IMS OTMA 异步队列”中没有任何消息,就不需要进一步尝试检索消息了。在经过在 SYNC_RECEIVE_ASYNCOUTPUT 交互的 executionTimeout 属性中指定的时间长度之后,将不会返回任何消息并且将发生超时。

5 SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT interactionVerb SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT 在可共享和专用持久套接字连接上都有效。它用来检索异步输出。

对于这种类型的交互,Java 客户机只能接收单条消息。如果发出请求时 clientID 的“IMS OTMA 异步队列”中没有任何消息,就不会进一步尝试检索消息。在经过在 SYNC_RECEIVE_ASYNCOUTPUT_SINLE_NOWAIT 交互的 executionTimeout 属性中指定的时间长度之后,将不会返回任何消息并且将发生超时。

注意:interactionVerb SYNC_RECEIVE_ASYNCOUTPUT 和 SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT 执行相同的功能。但是,建议将 SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT 用于 Rational Application Developer 6.0.0.2 和 IMS 资源适配器 9.1.0.1.1 或 9.1.0.2。

6 SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT interactionVerb SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT 用来检索异步输出。它在可共享持久套接字连接和专用持久套接字连接上都有效。

对于这种类型的交互,Java 客户机只能接收单条消息。如果发出请求时 clientID 的“IMS OTMA 异步队列”中没有任何消息,则 IMS Connect 将等待 OTMA 返回消息。IMS Connect 将等待在 SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT 交互的 executionTimeout 属性中指定的时间长度,如果经过这段时间之后还没有返回消息,则会产生异常。

J2EE 连接体系结构(JCA)值 SYNC_RECEIVE(2)目前是不受支持的。

ltermName
这是 LTERM 名称,它用来覆盖 IMS 应用程序的 I/O PCB 中的 LTERM 字段中的值。有关如何使用 LTERM 覆盖的描述,请参阅 IMS Connect User's Guide and Reference(SC27-0946-23)。

如果客户机应用程序想提供 LTERM 覆盖名称,则可以设置此属性的值。此名称将位于 IMS 应用程序的 I/O PCB 中,以便于 IMS 应用程序根据此覆盖值来进行逻辑判断。

mapName
mapName 字段通常包含“消息格式化服务”(MFS)控制块的名称。MFS 是 IMS 的一个组件,它执行事务输入和输出消息的联机格式化。因为 IMS Connect 使用 IMS OTMA 来访问 IMS,所以可以忽略 MFS 联机格式化。但是,Java 应用程序仍然可以使用 mapName 字段来将 MFS 控制块的名称输入到 IMS 应用程序中,或者使用该字段来检索由 IMS 应用程序提供的 MFS 控制块的名称。

在输入中,mapName 属性的值通常就是“MFS 消息输出描述符”的名称或者是“MOD”。将在 I/O PCB 中将 MOD 名称提供给 IMS 应用程序。

在输出中,mapName 属性的值就是“MFS 消息输出描述符”的名称或者是“MOD”。这是在将事务输出消息插入到 I/O PCB 中时由 IMS 应用程序指定的 MOD 名称。

注意:如果企业服务的输入消息和输出消息是由 WebSphere Studio MFS 支持生成的,则使用该企业服务的 Java 应用程序就不应使用 mapName 字段。

purgeAsyncOutput
这是一种输入属性。此属性确定 IMS Connect 是否清除未传递的输出。

此属性仅对于可共享持久套接字连接上的使用 IMS interactionVerb SYNC_SEND_RECEIVE 的交互有效。该属性对于专用持久套接字连接上的任何交互都无效。它适用于落实方式 0 交互。它不适用于落实方式 1 交互。但是,如果落实方式 1 交互执行程序间交换,则衍生的程序将运行落实方式 0,因此该属性也将适用。

如果在可共享持久套接字连接上的 SYNC_SEND_RECEIVE 交互上未指定 purgeAsyncOutput 属性,则缺省值为 TRUE。如果此属性设置为 TRUE,则会清除下列输出消息:
  • 被主要的 IMS 应用程序插入到 I/O PCB 中的未传递的输出消息。
  • 被辅助 IMS 应用程序(由程序间切换调用)插入到 I/O PCB 中的输出消息。
reRoute
这是一种输入属性。

此属性仅在具有落实方式 0 或落实方式 1 交互(这些交互又引起程序间切换,该切换调用另一个落实方式 0 交互,并导致不可传递的辅助输出)的可共享持久套接字连接上的 SYNC_SEND_RECEIVE 交互有效。此属性确定是否会将未传递的输出重新路由至在 reRouteName 字段中指定的指定目标。如果 reRoute 为 TRUE,则不会将异步输出排队至所生成的 clientID 的 TPIPE。而是会将异步输出排队至在 reRouteName 字段中指定的目标。reRoute 的缺省值为 FALSE。

如果将 reRoute 和 purgeAsyncOutput 都设置为 TRUE,则会抛出异常。

reRouteName
此属性提供要将异步输出排队至的目标的名称。如果 reRoute 为 TRUE,则此属性将提供指定目标。如果 reRoute 为 FALSE,则会忽略 reRouteName 属性。
如果 reRoute 属性设置为 TRUE,但是没有提供 reRouteName,则 reRouteName 属性的值为:
  1. 在 IMS Connect 配置文件中指定的值。
  2. 如果在 IMS Connect 配置文件中没有指定值,则使用值“HWS$DEF”。
reRouteName 属性仅对于可共享持久套接字连接上的 SYNC_SEND_RECEIVE 交互有效。该属性对于专用持久套接字连接上的任何交互都无效。
相关概念
执行超时
套接字超时
相关任务
设置执行超时值
设置套接字超时值
相关参考
有效的执行超时值
连接属性
使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.