IMSInteractionSpec 属性配置

必须提供已配置的 IMSInteractionSpec 对象以便与 IMS™ 进行交互。

当 Java™ 应用程序与 IMS 进行交互时,它必须提供已配置的 IMSInteractionSpec 对象。IMSInteractionSpec 对象的属性值描述了与 IMS 进行的交互。使用公共客户机接口的应用程序可以通过 set 方法直接提供 IMSInteractionSpec 的属性值,还可以将这些属性值提供给为该应用程序生成代码的 IDE 向导。在这些属性中,部分属性为“仅输入”属性,部分为“输入和输出”属性,而部分为“仅输出”属性。Java 应用程序(另称为应用程序组件)对“仅输出”属性进行查询以确定有关交互的其他信息。

以下列表描述了 IMSInteractionSpec 的所有属性:

altClientID
这是仅输入属性,用来提供备用客户机标识的名称。此名称将用作 TPIPE,从中将检索到可共享持久套接字连接上的异步输出。
此属性受以下条件支持:
  • 具有可共享持久套接字的 TCP/IP 连接
  • 具有用于检索异步输出消息(resumeTpipe 请求)的有效交互动词:SYNC_RECEIVE_ASYNCOUTPUT、SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT 和 SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT
  • 落实方式 0 交互 - 不能与本地选项配合使用
  • 不能与专用套接字连接配合使用
  • 重新路由名称与备用 clientID 相互排斥,不能同时指定
asyncOutputAvailable
这是一种“仅输出”属性。Java 应用程序可以使用它来确定,与用于落实方式 0 交互的连接相关联的 TPIPE 是否存在已排队的输出。对于专用持久套接字连接,TPIPE 的名称是 IMSConnectionSpec 的 clientID 属性中的值。对于可共享持久套接字连接,TPIPE 的名称是由 IMS Connector for Java 生成的值。如果队列中存在消息,则 asyncOutputAvailable 的值为 true。应用程序组件不会在输入上设置 asyncOutputAvailable 属性。注意:如果 Java 应用程序使用此属性,则必须将它作为 IMSInteractionSpec 的输出属性进行公开。
convEnded
这是一种“仅输出”属性。Java 应用程序可以使用它来确定对话是否已结束(true)。应用程序组件不会在输入上设置 convEnded 属性。注意:如果 Java 应用程序使用此属性,则必须将它作为 IMSInteractionSpec 的输出属性进行公开。
commitMode
IMS TM 资源适配器使用此属性来指示要为 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,并且是将可共享持久套接字用于交互,则不能指定 clientID。如果为可共享持久套接字上的交互指定了 commitMode 0,则可以清除或重新路由事务产生的输出消息。也可以清除或重新路由程序间切换所产生的未传递的辅助输出。
如果是将专用持久套接字连接用于交互,则 commitMode 必须为 0,并且必须提供用于连接的 IMSConnectionSpec 的 clientID 属性。如果是将专用持久套接字用于 commitMode 0 交互,则始终都可以恢复未传递的输出消息,并且不能清除或重新路由这些输出消息。
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 TM 资源适配器如何处理请求所产生的输出。整数值为:
IMSInteractionSpecProperties 中的命名常量 描述
1

IMS_REQUEST_TYPE_IMS_
TRANSACTION

请求是一个 IMS 事务。IMS 返回的正常事务输出将用来填充应用程序的输出消息。如果 IMS 返回“DFS™”消息,则 IMS 资源适配器将抛出一个包含“DFS”消息的 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 TM 资源适配器当前支持的值如下:
IMSInteractionSpecProperties 中的命名常量 描述
0 SYNC_SEND IMS TM 资源适配器通过 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 TM 资源适配器将发送一条消息来强制结束 IMS 对话式事务。

当为 interactionVerb 提供了 SYNC_END_CONVERSATION 时,IMSInteractionSpec 属性 commitMode 和 IMSConnectionSpec 属性 clientID 将不适用。

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

可共享持久套接字连接上的 SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT 交互必须与原来的 SYNC_SEND 或 SYNC_SEND_RECEIVE 交互在同一个应用程序中,并且必须使用同一个可共享持续连接。这种情况主要发生在执行超时之后。

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

5

SYNC_RECEIVE_ASYNCOUTPUT_
SINGLE_NOWAIT

interactionVerb

SYNC_RECEIVE_ASYNCOUTPUT_
SINGLE_NOWAIT

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

SYNC_RECEIVE_ASYNCOUTPUT_
SINGLE_NOWAIT

可共享持久套接字连接上的交互必须与原来的 SYNC_SEND 或 SYNC_SEND_RECEIVE 交互在同一个应用程序中,并且必须使用同一个可共享持续连接。这种情况主要发生在执行超时之后。
对于这种类型的交互,Java 客户机只能接收单条消息。如果发出请求时 clientID 的“IMS OTMA 异步队列”中没有任何消息,就不会进一步尝试检索消息。在经过在

SYNC_RECEIVE_ASYNCOUTPUT_
SINGLE_NOWAIT

交互的 executionTimeout 属性中指定的时间长度之后,将不会返回任何消息并且将发生超时。
注意:交互动词 SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT 和

SYNC_RECEIVE_ASYNCOUTPUT_
SINGLE_NOWAIT

执行相同的功能。但是,建议您使用

SYNC_RECEIVE_ASYNCOUTPUT_
SINGLE_NOWAIT

6

SYNC_RECEIVE_ASYNCOUTPUT_
SINGLE_WAIT

interactionVerb

SYNC_RECEIVE_ASYNCOUTPUT_
SINGLE_WAIT

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

SYNC_RECEIVE_ASYNCOUTPUT_
SINGLE_WAIT

可共享持久套接字连接上的交互必须与原来的 SYNC_SEND 或 SYNC_SEND_RECEIVE 交互在同一个应用程序中,并且必须使用同一个可共享持续连接。这种情况主要发生在执行超时之后。
对于这种类型的交互,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 应用程序根据此覆盖值来进行逻辑判断。

如果客户机应用程序想提供 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 字段。

输入时,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 交互动词 SYNC_SEND_RECEIVE 的交互有效。该属性对于专用持久套接字连接上的任何交互都无效。它适用于落实方式 0 交互。它不适用于落实方式 1 交互。但是,如果落实方式 1 交互执行程序间交换,则衍生的程序将运行落实方式 0,因此该属性也将适用。

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

此属性仅对于可共享持久套接字连接上的使用 IMS 交互动词 SYNC_SEND_RECEIVE 的交互有效。该属性对于专用持久套接字连接上的任何交互都无效。它适用于落实方式 0 交互。它不适用于落实方式 1 交互。但是,如果落实方式 1 交互执行程序间交换,则衍生的程序将运行落实方式 0,因此该属性也将适用。此属性确定是否会将未传递的输出重新路由至在 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 属性的有效值应满足下列要求:
  • 必须是一个有 1 到 8 个字母数字(A-Z 和 0-9)或特殊字符(@、# 和 $)的字符串。
  • 不能以字符串“HWS”开头。
  • 不能是 IMS Connect 端口号。
  • 如果使用的是小写字母,则会将它们更改为大写字母。

reRouteName 属性仅对于可共享持久套接字连接上的 SYNC_SEND_RECEIVE 交互有效。该属性对于专用持久套接字连接上的任何交互都无效。

syncLevel
这是一种输入属性。syncLevel 是在 IMS Connector for Java 与 IMS OTMA 之间进行的交互的同步级别。有效的同步级别值是 0(NONE)和 1(CONFIRM)。syncLevel 属性仅适用于 interactionVerb 属性的 SYNC_SEND_RECEIVE 和 SYNC_SEND 值,并与 commitMode 属性配合使用。它适用于对话式应用程序和非对话式应用程序。
落实方式 1
同步级别 0 和 1 是有效的。0 为缺省值。例如,如果 interactionVerb 属性设置为 SYNC_SEND_RECEIVE 且 commitMode 属性设置为 1,则不必设置 syncLevel 属性。如果向 setSyncLevel(int) 方法传递 0 或 1 之外的任何其他值,则将抛出异常。 
落实方式 0
同步级别 1 是唯一有效值。在落实方式下,不必设置同步级别。如果向 setSyncLevel(int) 方法传递 1 之外的任何其他值,则将抛出异常。
程序间的切换所触发的程序将始终以落实方式 0 来处理,而与发起程序的同步级别无关。因此,来自这些程序的辅助输出既可以被放入重路由队列中,也可以被清除,具体情况取决于原先的交互中 reRoute 和 purgeNotDeliverable 属性的设置。

反馈