当 Java™ 应用程序与 IMS 进行交互时,它必须提供已配置的 IMSInteractionSpec 对象。IMSInteractionSpec 对象的属性值描述了与 IMS 进行的交互。使用公共客户机接口的应用程序可以通过 set 方法直接提供 IMSInteractionSpec 的属性值,还可以将这些属性值提供给为该应用程序生成代码的 IDE 向导。在这些属性中,部分属性为“仅输入”属性,部分为“输入和输出”属性,而部分为“仅输出”属性。Java 应用程序(另称为应用程序组件)对“仅输出”属性进行查询以确定有关交互的其他信息。
以下列表描述了 IMSInteractionSpec 的所有属性:
值 | IMSInteractionSpecProperties 中的命名常量 | 描述 |
---|---|---|
1 | IMS_REQUEST_TYPE_IMS_ |
请求是一个 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_ |
imsRequestType 的此值适用于使用 WebSphere Studio MFS 支持生成的应用程序。 IMS 返回的正常事务输出以及“DFS”消息用来填充应用程序的输出消息。未抛出 IMSDFSMessageException。 |
值 | 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_ |
interactionVerb SYNC_RECEIVE_ASYNCOUTPUT_ A
SYNC_RECEIVE_ASYNCOUTPUT_ 对于这种类型的交互,Java
客户机只能接收单条消息。如果发出请求时 clientID 的“IMS
OTMA 异步队列”中没有任何消息,就不会进一步尝试检索消息。在经过在
SYNC_RECEIVE_ASYNCOUTPUT_ 注意:交互动词
SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT 和
SYNC_RECEIVE_ASYNCOUTPUT_ SYNC_RECEIVE_ASYNCOUTPUT_ |
6 | SYNC_RECEIVE_ASYNCOUTPUT_ |
interactionVerb SYNC_RECEIVE_ASYNCOUTPUT_ A
SYNC_RECEIVE_ASYNCOUTPUT_ 对于这种类型的交互,Java
客户机只能接收单条消息。如果发出请求时 clientID 的“IMS
OTMA 异步队列”中没有任何消息,则 IMS
Connect 将等待 OTMA 返回消息。IMS Connect
在等待
SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT 交互的 executionTimeout 属性中指定的时间长度之后,才返回异常。 |
目前尚不支持 J2EE 连接体系结构(JCA)值 SYNC_RECEIVE(2)。
如果客户机应用程序想提供 LTERM 覆盖名称,则可以设置此属性的值。此名称将位于 IMS 应用程序的 I/O PCB 中,以便于 IMS 应用程序根据此覆盖值来进行逻辑判断。
如果客户机应用程序想提供 LTERM 覆盖名称,则可以设置此属性的值。此名称将位于 IMS 应用程序的 I/O PCB 中,以便于 IMS 应用程序根据此覆盖值来进行逻辑判断。
输入时,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 字段。
此属性仅对于可共享持久套接字连接上的使用 IMS 交互动词 SYNC_SEND_RECEIVE 的交互有效。该属性对于专用持久套接字连接上的任何交互都无效。它适用于落实方式 0 交互。它不适用于落实方式 1 交互。但是,如果落实方式 1 交互执行程序间交换,则衍生的程序将运行落实方式 0,因此该属性也将适用。
此属性仅对于可共享持久套接字连接上的使用 IMS 交互动词 SYNC_SEND_RECEIVE 的交互有效。该属性对于专用持久套接字连接上的任何交互都无效。它适用于落实方式 0 交互。它不适用于落实方式 1 交互。但是,如果落实方式 1 交互执行程序间交换,则衍生的程序将运行落实方式 0,因此该属性也将适用。此属性确定是否会将未传递的输出重新路由至在 reRouteName 字段中指定的指定目标。如果 reRoute 为 TRUE,则不会将异步输出排队至所生成的 clientID 的 TPIPE。而是会将异步输出排队至在 reRouteName 字段中指定的目标。reRoute 的缺省值为 FALSE。
如果将 reRoute 和 purgeAsyncOutput 都设置为 TRUE,则会抛出异常。
reRouteName 属性仅对于可共享持久套接字连接上的 SYNC_SEND_RECEIVE 交互有效。该属性对于专用持久套接字连接上的任何交互都无效。