消息传递故障诊断小贴士

这些小贴士将帮助您对 WebSphere® 消息传递配置进行故障诊断。

注: 本主题引用了一个或多个应用程序服务器日志文件。作为另一种建议采用的方法,您可以在分布式系统和 IBM® i 系统上配置服务器以使用高性能可扩展日志记录 (HPEL) 记录和跟踪基础结构,而不使用 SystemOut.logSystemErr.logtrace.logactivity.log 文件。您还可以将 HPEL 与本机 z/OS® 日志记录设施结合使用。如果要使用 HPEL,那么可从服务器概要文件 bin 目录使用 LogViewer 命令行工具来访问所有日志和跟踪信息。有关使用 HPEL 的更多信息,请参阅有关使用 HPEL 对应用程序进行故障诊断的信息。

[IBM i][AIX Solaris HP-UX Linux Windows]为了帮助确定并解决有关消息传递的问题,您可以使用 WebSphere Application Server 跟踪和日志记录工具。

[z/OS]为了帮助确定并解决有关消息传递的问题,您可以使用设置组件跟踪 (CTRACE) 中描述的 WebSphere Application Server 跟踪和日记记录工具。

如果您在部署或运行使用 WebSphere Application Server 消息传递功能的应用程序时遇到问题,请参阅以下主题:

如果在 WebSphere Application Server 消息和日志中看到 IBM MQ 错误消息或原因码,请参阅 IBM MQ 信息中心的消息章节。

使用诊断和修正问题:学习资源中的链接来检查是否已确定并记录了此问题。

WebSphere MQ 资源适配器配置不会自动进行更新并且需要手动维护

通常,IBM MQ 资源适配器是在您应用 WebSphere Application Server 修订包时自动更新的。但是,如果您已在环境中的某些节点上手动更新 IBM MQ 资源适配器,那么应用修订包不会自动更新这些节点上的服务器所使用的资源适配器。

要解决此问题,请参阅维护 IBM MQ 资源适配器

安装修订包时发生 java.lang.ClassNotFoundException 异常

如果安装修订包时您看到了以下消息,请遵循维护 IBM MQ 资源适配器中的指示信息以尝试并解决问题:
J2CA0043E: 尝试对 ResourceAdapter 进行实例化时发生异常
已安装的 ResourceAdapter 的 JavaBean 实例由键 #removed# 定义

JMS 应用程序不会使用来自 WebSphere MQ for z/OS 的消息

被部署到 WebSphere Application Server 中的和使用连接工厂或激活规范的 JMS 应用程序将不会占用来自 WebSphere MQ for z/OS 的消息

JMS 应用程序不能再发送或接收消息

将应用程序配置为使用缺省消息传递提供程序时,应将其与下列其中一个资源集相关联:
  • 通过 Java™ 消息服务 (JMS) 激活规范连接的一个或多个消息 Bean。
  • 通过 JMS 连接工厂和 JMS 目标连接的一个或多个企业 Bean。
要帮助解决此问题,请使用以下管理控制台面板来检查应用程序和 JMS 资源的配置:

MDB 侦听器无法启动

如果对侦听器端口部署的 MDB 侦听器无法启动,您应该会看到以下消息:
WMSG0019E: Unable to start MDB Listener {0}, JMSDestination {1} : {2} 
为了帮助解决此问题,请检查以下因素:
  • 请检查是否已经正确配置了管理资源。 例如,使用管理控制台来检查侦听器端口属性:目标 JNDI 名称和连接工厂 JNDI 名称。检查侦听器端口、目标和连接工厂的其他属性是否正确。
  • 检查队列是否存在以及是否已添加到 JMS 服务器。
  • 检查队列管理器和 JMS 服务器是否已启动。
  • 检查远程队列管理器侦听器是否已启动。
  • [AIX Solaris HP-UX Linux Windows][IBM i]如果启用安全性,那么检查是否在消息驱动的 Bean 使用的队列连接工厂或主题连接工厂上指定了组件管理的认证别名。[z/OS]如果启用安全性,请检查用于启动 MDB 侦听器的用户标识的授权是否恰当。 有关更多信息,请参阅在启用安全性的情况下运行 JMS 应用程序发生的问题

在启用安全性的情况下运行 JMS 应用程序发生的问题

当您尝试使用启用的安全性来运行 JMS 应用程序时,您可能会遇到由一个或多个以下错误消息指出的认证问题:
WMSG0019E: Unable to start MDB Listener PSSampleMDB, JMSDestination Sample/JMS/listen : 
javax.jms.JMSSecurityException:
此示例表明提供的安全性凭证无效。
要解决此问题,请检查安全性配置:
  • 如果认证机制设置为应用程序,那么应用程序必须提供有效的凭证。
  • 如果将认证机制设置到容器,那么您必须配置具有容器管理的认证别名的 JMS 连接工厂,并确保关联的用户标识和密码有效。[z/OS]或者,当在绑定传输方式中运行时,您可以使用连接器线程标识支持。
[AIX Solaris HP-UX Linux Windows][IBM i]
MQJMS2013 invalid security authentication supplied for MQQueueManager:
如果您要使用 IBM MQ 作为 JMS 提供程序,具有 JMS 连接并使用绑定传输方式,而指定的用户不是 WebSphere Application Server 进程的当前登录用户,那么通过 IBM MQ 的 JMS 绑定认证将生成无效的安全认证错误。
要解决此问题,请查看安全性配置。配置 IBM MQ JMS 提供程序以使用绑定传输方式时,您可以在 IBM MQ 队列连接工厂中将属性传输类型设置为 BINDINGS。同时,您还必须选择下列其中一个选项:
  • 使用安全凭证。要执行此操作,请确保指定的用户是 WebSphere Application Server 进程的当前登录用户。
  • 不使用安全凭证。在 IBM MQ 连接工厂中,确保未设置组件管理的认证别名容器管理的认证别名属性。

有关消息传递安全性的更多信息,请参阅对消息传递进行保护

[AIX Solaris HP-UX Linux Windows]

当在 Solaris 上设置 zh_TW.EUC 语言环境时,应用程序服务器不会启动

在 Solaris 上,如果您将语言环境设置为 zh_TW.EUC 并且要使用 IBM MQ 作为 JMS 提供程序,那么应用程序服务器可能无法启动。

要解决此问题,请将 LANG 和 LC_ALL 变量设置为 zh_TW。

处理 JMS 消息时的服务器内存消耗和 java.lang.OutOfMemoryError 异常

当您使用缺省消息传递提供程序时,由消息传递引擎在应用程序服务器进程中处理 JMS 消息。这种方法将消耗应用程序服务器 Java 虚拟机堆的内存。如果存在大型消息的重要的并发处理,并且 Java 虚拟机堆可用内存量不足以处理此事件,那么将会抛出 java.lang.OutOfMemoryError 异常,并且应用程序服务器将终止。

要解决此问题,请估计潜在的并发处理器数目或者消息使用者数目以及消息大小,然后将应用程序服务器的 Java 虚拟机堆大小设置为能够处理这些影响。例如:
  1. 当您部署并发地处理消息的消息驱动的 Bean 时,请估计并发端点可能消耗的应用程序服务器的内存。请注意并发地处理消息请求的每个端点将向服务器 Java 虚拟机堆中至少添加两倍的消息大小,并且可能添加更大的消息大小,尤其是存在两阶段事务的情况下。
  2. 启动 WebSphere Application Server 管理控制台。
  3. 导航至服务器 > 服务器类型 > WebSphere 应用程序服务器 > server_name > Java 和进程管理 > 进程定义 > Java 虚拟机,然后通过设置初始堆大小最大堆大小属性来配置应用程序服务器 Java 虚拟机堆的可用内存量。
  4. 导航至资源 > JMS > JMS 提供程序 > 缺省消息传递提供程序 > 激活规范 > activation_specification_name,然后通过设置用以此消息驱动的 Bean 的激活规范的最大并发端点属性,来配置可以处理消息的并发 MDB 端点的数目。

TopicConnectionFactory 属性冲突错误

创建使用 IBM MQ 消息传递提供程序的 JMS 主题订户时,SystemOut.log 文件中将出现以下错误消息:
WSVR0017E: Error encountered binding the J2EE resource, TopicConnectionFactory, as <JNDI_NAME>
   from file:<RESOURCES_FILE> com.ibm.ws.runtime.component.binder.ResourceBindingException: invalid
   configuration passed to resource binding logic. REASON: Failed to create connection factory:
   Error raised constructing AdminObject, error code:  TopicConnectionFactory attributes clash  : 
   TopicConnectionFactory attributes clash 

此问题是用于创建订户的 JMS 主题连接工厂的配置所导致的,该配置指定了代理版本“基本”和消息选择值“代理”。“基本”IBM MQ 代理(MA0C SupportPac 代理)不支持“代理”消息选择。

要解决此问题,请更改 JMS 主题连接工厂以指定消息选择值“客户机”,该值是 IBM MQ 基本代理(MA0C SupportPac 代理)支持的唯一值。

“WSEC5061E: 未签署 SOAP 主体”异常

IBM MQ 消息传递提供程序下运行使用 JMS 传输的安全 Web Service 应用程序时,SystemOut.log 文件中将出现以下错误消息:
com.ibm.wsspi.wssecurity.SoapSecurityException: WSEC5061E: The SOAP Body is not signed.; null
此问题将在下列情况中发生:
  • 使用 Web Service 安全性配置的 Web Service 应用程序正在已启用 WebSphere Application Server 安全性的应用程序服务器中运行。
  • 此 Web Service 应用程序使用 JMS 传输将 SOAP 请求发送至目标 Web Service。
  • JMS 资源使用远程IBM MQ 服务器连接至 IBM MQ 队列。
  • 另一个完全相同的 Web Service 应用程序(配置为使用通过同一 IBM MQ 服务器的同一队列)正在未启用 WebSphere Application Server 安全性的另一个应用程序服务器中运行。

当处理通过同一队列但指向不同(未启用安全性的)应用程序服务器的从原始应用程序发送的请求时,将发生此问题。

要解决此问题,请执行以下操作:
  1. IBM MQ 服务器中创建具有唯一端口的唯一队列管理器。
  2. 重新配置 JMS 资源以使用新的队列管理器和端口;例如,通过使用 WebSphere Application Server 管理控制台来更改 IBM MQ 队列连接工厂的属性(如为 IBM MQ 消息传递提供程序配置队列连接工厂中所述)。
  3. 重新运行应用程序。

使用 IBM MQ 作为外部 JMS 提供程序时出错

使用 IBM MQ 作为外部 JMS 提供程序,并且将消息发送至用户管理的事务内的 IBM MQ 队列时,该消息可以在事务落实前到达目标队列。如果 IBM MQ 资源管理器未参与用户管理的事务,那么将发生此问题。

要解决此问题,请使用容器管理的事务。

[AIX Solaris HP-UX Linux Windows][IBM i]

javax.jms.JMSException: MQJMS3024:无法启动 MDB 侦听器

如果使用未初始化的客户机标识(即与持久预订不相关联的客户机标识),那么有可能会发生此错误。要解决此问题,请使用下列三种方法之一设置客户机标识:
  • 使用 jmsadmin 工具将客户机标识设置为 tcf 的属性。例如,更改 tcf(myTCF) clientid(myID)
  • 使用 TopicConnection.setClientID() 以编程方式设置客户机标识
  • 使用管理控制台来修改 IBM MQ 消息传递提供程序主题连接工厂设置 以通过管理方式设置客户机标识字段。
[z/OS]

服务器启动期间显示 WebSphere MQ 消息传递提供程序通道框架消息

在服务器启动期间,控制区域助手进程中可能会多次显示以下消息,即使随后进行重试时连接成功也是如此。发出此消息的原因是,z/OS TCP 代理通道以异步方式启动,但该消息并不表示发生了任何错误。

跟踪时间:2009/06/17 08:24:41.434 01 t=9C6B58 c=UNK key=P8 (00000011)
描述:记录 Java 消息
消息:CHFW0030E: 启动链 _InboundTCPProxyBridgeService 时出错,
因为发生了异常 com.ibm.wsspi.channel.framework.exception.RetryableChannelException:
尝试启动 TCPProxyChannel 时抛出了异常
com.ibm.ws.channel.framework.imp l.ChannelFrameworkImpl
发出这些消息的同时,可能会显示首次故障数据捕获 (FFDC) 输入,其内容类似于以下示例:
异常 = com.ibm.wsspi.channel.framework.exception.RetryableChannelException
源 = com.ibm.ws.channel.framework.impl.ChannelFrameworkImpl.startChainInternal
probeid = 2577
堆栈转储 = com.ibm.wsspi.channel.framework.exception.RetryableChannelException:
尝试启动 TCPProxyChannel 时抛出了异常
        at com.ibm.ws.tcpchannelproxy.jfap.impl.TCPProxyInboundChannel.
start(TCPProxyInboundChannel.java:153)
        at com.ibm.ws.channel.framework.impl.ChannelFrameworkImpl.
startChannelInChain(ChannelFrameworkImpl.java:1410)
        at com.ibm.ws.channel.framework.impl.ChannelFrameworkImpl.
startChainInternal(ChannelFrameworkImpl.java:2863)
        at com.ibm.ws.channel.framework.impl.WSChannelFrameworkImpl.
startChainInternal(WSChannelFrameworkImpl.java:960)
        at com.ibm.ws.channel.framework.impl.ChannelFrameworkImpl.
startChainInternal(ChannelFrameworkImpl.java:2794)
        at com.ibm.ws.channel.framework.impl.ChannelFrameworkImpl.
startChain(ChannelFrameworkImpl.java:2779)
        at com.ibm.ws.runtime.component.ChannelFrameworkServiceImpl.
startChain(ChannelFrameworkServiceImpl.java:666)
        at com.ibm.ws.sib.jfapchannel.framework.impl.ChannelFrameworkReference$TCPProxy
BridgeServiceInboundChainStartupRunnable.run(ChannelFrameworkReference.java:1641)
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1550)
原因:com.ibm.ws.tcpchannelproxy.jfap.NotYetInitializedException:
服务器尚未初始化
        at com.ibm.ws.tcpchannelproxy.jfap.TCPProxyBridgeServicesImpl.
startListening(TCPProxyBridgeServicesImpl.java:558)
        at com.ibm.ws.tcpchannelproxy.jfap.impl.TCPProxyInboundChannel.
start(TCPProxyInboundChannel.java:131)
        ... 8 more
最终,应显示以下消息,指示 z/OS TCP 代理通道已正常启动:
跟踪时间:2009/06/17 08:24:51.449 01 t=9C6B58 c=UNK key=P8 (13007002)
   ThreadId: 00000003
   FunctionName: com.ibm.ws.channel.framework.impl.WSChannelFrameworkImpl
   SourceId: com.ibm.ws.channel.framework.impl.WSChannelFrameworkImpl
   Category: AUDIT
   ExtendedMessage: BBOO0222I: CHFW0019I: 传输通道服务已启动
链 _InboundTCPProxyBridgeService。

指示主题类型的图标 参考主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rmj_prob0
文件名:rmj_prob0.html