对 JMS 节点进行故障诊断

就一切错误情况而论,如果基础原因是 JMS 提供程序抛出了 JMSException,则代理诊断事件消息将包含来自 JMSException 的文本消息以辅助诊断。

管理错误格式的消息

如果消息无法被 JMSInput 节点处理或已经作为全局事务的一部分回滚,则该消息将回退到源目标。然后,该消息将重新传递到 JMSInput 节点。

要防止错误格式的消息干扰对有效消息的处理,可以对节点属性进行如下配置:

回退目标 这是当 JMS 提供程序设置的 JMS 消息属性 JMSX_DeliveryCount 超过回退阈值时,将回退消息路由到的 JMS 目标。

JMS 目标必须适用于该节点所使用的消息模型;例如,如果已经在节点上配置了预订主题,则 JMS 目标也必须是一个主题。

回退阈值 这是一个整数值,控制是否将消息发送到回退目标。阈值为 3 表示当 JMSInput 节点收到 JMSX_DeliveryCount 属性值超过 3 的消息时,将把该消息发送至回退目标,并从源目标中除去该消息。

对使用全局协调事务时发生的问题进行故障诊断:

除代理服务跟踪以外,还提供另一个跟踪日志来诊断当 JMSInput 或 JMSOutput 节点参与全局消息流事务时可能发生的问题。即,消息流中至少有一个 JMSInput 或 JMSOutput 节点的事务方式属性被设置为 global,且消息流属性协调事务设置为 yes

要捕获跟踪日志,请完成以下步骤:
  1. 定义可用于代理队列管理器、名为 XAJMS_TRACEFILE 的环境变量。
  2. 设置该环境变量的值。这应该是一个表示跟踪日志的位置和文件名的字符串。例如,在 Windows 上可以对该变量进行如下配置:
    XAJMS_TRACEFILE = c:\JMSSwitchLog
  3. 当代理队列管理器启动时,它执行恢复步骤来解析 JMS 提供程序认为可疑的任何先前代理事务。此队列管理器进程将在此阶段输出两个跟踪日志。这两个跟踪日志为:
    • <XAJMS_TRACEFILE value><PID>.txt,其中 PID 是队列管理器启动进程的进程标识。此文件产生于代理的 JMSSwitch 库;请参阅 JMS 事务性,获取更多信息。

      为该变量使用以上示例值将产生一个名为 JMSSwitchLog2596.txt 的文件,其中队列管理器启动进程标识为 2596。

    • <XAJMS_TRACEFILE><XARecoveryTrace>.txt,由连接到 JMS 提供程序的代理恢复组件产生。
  4. 代理队列管理器完成恢复后,代理将启动并创建名为 <XAJMS_TRACEFILE value><PID>.txt 的文件,其中 PID 是队列管理器启动进程的进程标识。此文件产生于代理的 JMSSwitch 库;请参阅 JMS 事务性,获取更多信息。
这两个跟踪文件都不需要进行额外的格式化。

这不适用于 Z/OS。

JNDI 受管对象的问题

问题描述:JMSInput 或 JMSOutput 节点无法获取初始上下文工厂或 JNDI 受管对象(如连接工厂或 JMS 目标),并发出 bip4640 消息。

更正操作
  1. 验证是否已正确构建 JNDI 绑定,以及是否能在节点中指定的位置访问 JNDI 绑定。
  2. 检查在 JNDI 绑定中是否存在为初始上下文、连接工厂名称以及源队列或目标队列在节点中指定的值。
  3. 确保使用了正确的关键字与绑定的位置匹配
    • file:/ 何时在 .bindings 文件中创建了受管对象
    • ldap:/ 何时在 LDAP 目录中存在受管对象
    • iiop:/ 何时使用 CORBA 访问受管对象
  4. 当绑定基于文件时,不要在节点属性中指定 .bindings 文件名。
  5. 确保初始上下文工厂名称不包含文件路径。
  6. 确保在节点属性中指定的 JMS 目标(主题、源队列或目标队列)存在于 JNDI 受管对象中。
  7. 确保 JMS 提供程序 Java .jar 已放入分布式平台上的代理共享类目录中,或在 z/OS 上确保这些 jar 已定义为代理 CLASSPATH 及代理 LIBPATH 中定义的任何本机库。
JMS 节点将继续尝试获取 JNDI 受管对象。更正所有的问题并重新构建绑定。JMS 节点应该自动检测更改并尝试启动。

问题描述:JMSInput 或 JMSOutput 节点无法连接 JMS 提供程序并发出 bip4648 消息。

更正操作
  1. 验证 JMS 提供程序服务器是否正在运行。如果服务器脱机则启动它。
  2. 验证是否可以从代理环境使用 JMS 提供程序服务器。
  3. 确保 JMS 提供程序 Java .jar 已放入分布式平台上的代理共享类目录中,或在 z/OS 上确保这些 jar 已定义为代理 CLASSPATH 及代理 LIBPATH 中定义的任何本机库。
JMS 节点将继续尝试连接到 JMS 提供程序。更正所有的问题,JMS 节点应该自动检测更改并尝试连接到提供程序。

问题描述:JMSInput 或 JMSOutput 节点无法获取 JMS 目标并发出 bip4642 消息。

更正操作
  1. 调查诊断事件消息中可能包含的 JMS 异常消息所描述的问题原因。
  2. 检查是否已在 JNDI 受管对象中正确定义了节点属性(主题、源队列或目标队列)中定义的 JMS 目标属性名称。
  3. 验证是否已正确配置了 JMS 提供程序用于 JMS 目标的基础系统资源。
相关概念
JMS 事务性
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ac24877_