设置 socketTimeout 值时,需要考虑 executionTimeout 值。executionTimeout 属性就是 IMS Connect 将消息发送至 IMS™,然后接收来自 IMS 的响应这一过程可以花费的最长时间。socketTimeout 值包括了 executionTimeout 值。因此,socketTimeout 值应该大于 executionTimeout 属性,这是因为如果将套接字超时值设置为小于 executionTimeout 值,套接字就可能会发生不必要的超时。下表列示了基于 executionTimeout 值的 socketTimeout 值。
执行超时值(毫秒) | 执行超时行为 | 建议的套接字超时值 |
0(或者没有任何值) | 使用 IMS Connect 配置文件中的缺省值。 | 套接字超时值应该大于 IMS Connect 配置文件中指定的执行超时缺省值。 |
1 - 3,6000,000 | 在经过指定的毫秒值之后,等待响应就超时。 | 套接字超时值应该大于执行超时值。 |
-1 | 等待响应是无穷的。 | 将套接字超时值设置为 0,以便连接会无限等待。 |
可以采用两种方法来设置套接字超时值。可以编写一个使用 JCA 公共客户机接口(CCI)来访问随 IMSInteractionSpec 一起提供的 getter 和 setter 方法的应用程序,或者使用 Rational Application Developer 提供的工具。
使用 CCI 应用程序来设置套接字超时值
如果要创建 CCI 应用程序,则您要对 IMSInteractionSpec 的 setSocketTimeout 方法具有访问权。要使用 setSocketTimeout 方法,需要实例化新的 IMSInteractionSpec 或者从特定交互中获得 IMSInteractionSpec。然后,使用 IMSInteractionSpec 类提供的 setSocketTimeout 方法来设置该 IMSInteractionSpec 的 socketTimeout 值。例如:
interactionSpec.setSocketTimeout(timeoutValue1); interaction.execute(interactionSpec,input,output); interactionSpec.setSocketTimeout(timeoutValue2); interaction.execute(interactionSpec,input,output);
使用 Rational Application Developer 来设置套接字超时值
通过使用第一种方法,即,使用 Rational Application Developer,可以在您最初为新的 J2C Java Bean 定义 IMS 绑定属性时设置套接字超时值。要编辑已经为 IMS 服务定义的 IMS 绑定属性,完成下列步骤: