WS-ReliableMessaging 故障诊断技巧
有关对 WS-ReliableMessaging 配置进行故障诊断的技巧。
为了帮助确定并解决有关 WS-ReliableMessaging 的问题,您可以使用 WebSphere® Application Server 跟踪和日志记录工具。如果您正在使用基于 Eclipse 的工具,那么还可以使用 Eclipse 中的 TCP/IP 监视器来查看在客户机应用程序与支持可靠消息传递的 Web Service 之间传递的消息。
- 对于受管服务质量:
org.apache.sandesha2*=all=enabled:com.ibm.ws.websvcs.rm*=all=enabled:org.apache.axis2*=all=enabled:com.ibm.ws.sib.wsrm*=all=enabled
- 对于非受管的非持久服务质量:
org.apache.sandesha2*=all=enabled:com.ibm.ws.websvcs.rm*=all=enabled:org.apache.axis2*=all=enabled
WS-ReliableMessaging 已知限制中提供了使用 WS-ReliableMessaging 时受到的主要已知限制列表。
WebSphere Application Server 系统消息是从各种来源(包括应用程序服务器组件和应用程序)记录的。由应用程序服务器组件和相关 IBM 产品记录的消息以唯一消息标识开始,此标识指示发出消息的组件和应用程序。WS-ReliableMessaging 组件的前缀是 CWSKA。
故障诊断者参考:消息主题包含有关所有 WebSphere Application Server 消息(按消息前缀建立了索引)的信息。每条消息都提供了问题说明以及有关任何可以用来解决该问题的操作的详细信息。
- 如果重新分配了某个序列,那么您可能会看到比预期多的序列
如果可靠消息传递在集群上运行,那么当您检查入站和出站序列的运行时状态时,您会看到每个序列有多个条目
当您检查入站或出站序列的运行时状态时,您可能会看到每个序列有多个条目
- 从 V6.1.0.9 或 6.1.0.11 迁移持久存储的 WS-ReliableMessaging 消息时发生运行时错误
- 应用程序服务器启动时,用于可靠消息传递的消息传递引擎被报告为不可用
- 客户机应用程序无法调用支持可靠消息传递的 Web Service
- 未建立序列,因此 WS-ReliableMessaging 无法确保传输了消息
- 序列已建立但无法使用,因此 WS-ReliableMessaging 无法确保传输了消息
- 未初始化可靠消息传递受管库,因为策略集绑定不完整或无效
- 可靠消息传递被中断,因为服务器不可用
- 在集群中运行多个可靠消息传递客户机应用程序时收到套接字超时错误
- 服务器不可用后未恢复消息
- 异常消息声明安全上下文令牌无效
使用受管服务质量时,服务方区域发生超时异常结束
如果重新分配了某个序列,那么您可能会看到比预期多的序列
在检查入站或出站序列的运行时状态时,您可能会由于序列重新分配而找到意外的序列
如果对序列进行了重新分配,那么原始序列和新序列均可见。请忽略重复条目。
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
如果可靠消息传递在集群上运行,那么当您检查入站和出站序列的运行时状态时,您会看到每个序列有多个条目
这是因为,虽然可靠消息传递仅绑定到集群中的一个消息传递引擎,但是运行时面板会为每个集群成员计算和显示序列信息一次。 忽略重复条目。请注意,为每个重复条目显示的统计信息中的细微差异主要是因为条目是按序创建,而对消息的轮询是一直继续的。
![[z/OS]](../images/ngzos.gif)
当您检查入站或出站序列的运行时状态时,您可能会看到每个序列有多个条目
这是因为,虽然可靠消息传递仅绑定到一个消息传递引擎,但是运行时面板会为每个服务方区域计算和显示序列信息一次。 忽略重复条目。请注意,为每个重复条目显示的统计信息中的细微差异主要是因为条目是按序创建,而对消息的轮询是一直继续的。
从 V6.1.0.9 或 6.1.0.11 迁移持久存储的 WS-ReliableMessaging 消息时发生运行时错误
如果您要从 WebSphere Application Server V6.1 进行迁移,并且正在使用 Feature Pack for Web Services V6.1.0.9 或 V6.1.0.11,而且配置包含针对受管持久服务质量配置的 WS-ReliableMessaging,那么在进行迁移前,需要移除所有持久存储的消息。
应用程序服务器启动时,用于可靠消息传递的消息传递引擎被报告为不可用
如果将可靠消息传递与受管服务质量一起使用,那么在应用程序服务器启动时,可看到以下异常消息:
CWSIT0019E: 总线 yourBus 中不存在与指定的连接属性相匹配的合适消息传递引擎
在 Network Deployment 环境中,发生这种情况的原因可能是消息传递引擎所在的应用程序服务器或集群成员,在主管可靠消息传递应用程序的服务器之后启动。在这种情况下,您只需等待;可靠消息传递将继续尝试连接,直到消息传递引擎变为可用。
- 检查指定的消息传递引擎和服务集成总线是否存在。
- 检查系统输出日志以确保主管消息传递引擎的服务器已启动。
客户机应用程序无法调用支持可靠消息传递的 Web Service
- 端点可用。
- 服务正在运行。
- 已调用服务。
- WS-ReliableMessaging 正在运行。
- 正确配置了 WS-ReliableMessaging。尤其是对于任一受管服务质量,请检查是否已经配置了与服务集成总线和消息传递引擎的有效绑定,以及消息传递引擎是否正在运行。有关更多信息,请参阅使用管理控制台将 WS-ReliableMessaging 策略集连接到 Web Service 应用程序并与其绑定 或 使用 wsadmin 工具将 WS-ReliableMessaging 策略集连接到 Web Service 应用程序并与其绑定。
- 未使过多的应用程序共享单一消息传递引擎。
注: 当多个应用程序使用同一个消息传递引擎时,将影响性能。要考虑的因素包括已绑定到消息传递引擎的应用程序数、CPU 利用率和消息吞吐量。 要提高单服务器配置的性能,请创建新的消息传递引擎以绑定到您的应用程序。
未建立序列,因此 WS-ReliableMessaging 无法确保传输了消息
在建立序列之后,WS-ReliableMessaging 会将消息重新传输至服务。但是,如果未建立序列,那么就不会将消息传输至服务,并且会显示一条与以下示例相似的消息:
org.apache.axis2.AxisFault: RM 目标拒绝了“创建序列”请求
已经拒绝了初始的 createSequence 消息。这是传播回来的消息,并导致客户机失败。有关 CreateSequence 和 CreateSequenceRefused 的信息,请参阅WS-ReliableMessaging:受支持的规范与标准。
您后来还可能会看到一条消息来帮助说明为何请求被拒绝。例如:
原因:javax.xml.ws.soap.SOAPFaultException: com.ibm.ws.sib.wsrm.exceptions.WSRMRuntimeException:
CWSJZ0202I: 没有为 myBus 总线提供消息传递引擎连接
。- 检查是否正确应用了策略集。特别要检查目标是否正确启用了可靠消息传递。
- 检查服务器端产生的问题的日志。
- 对于受管持久服务质量,检查相关联的消息传递引擎是否可用。
序列已建立但无法使用,因此 WS-ReliableMessaging 无法确保传输了消息
如果发生类似于以下的异常,那么表明虽然已建立序列,但该序列不可用:
javax.xml.ws.WebServiceException: org.apache.axis2.AxisFault: wsrm:Identifier 的值是一个未知的序列标识
。产生此异常的最常见原因是:您正在一个集群环境中工作,但是服务器端策略集指定了非受管的非持久服务质量。例如:WS-I RSP 缺省策略集指定了非受管非持久服务质量。要在集群环境中使用可靠的异步消息传递,必须使用受管服务质量以使集群成员能够使可靠消息传递状态相关。要完成此任务,请使用 WS-I RSP ND 缺省策略集,或者修改定制策略集以使 WS-ReliableMessaging 策略指定受管服务质量以及对服务集成总线和消息传递引擎的相关联绑定。有关如何完成此任务的信息,请参阅使用管理控制台来配置 WS-ReliableMessaging 策略集和使用管理控制台将 WS-ReliableMessaging 策略集连接到 Web Service 应用程序并与其绑定。
未初始化可靠消息传递受管库,因为策略集绑定不完整或无效
如果策略集指定了受管服务质量,但是尚未指定与消息传递引擎的绑定以支持该服务质量,那么就会产生以下异常消息:
CWSKA0102E: 未能初始化受管的 Web Service 可靠消息传递存储管理器,因为策略集绑定不完整或无效
。也许您已经将受管策略集连接至应用程序,并且使用了缺省绑定,而缺省绑定不支持受管服务质量。您必须为应用程序创建新的绑定,并且此绑定必须指定服务集成总线和消息传递引擎以支持受管服务质量。为此,请参阅使用管理控制台将 WS-ReliableMessaging 策略集连接到 Web Service 应用程序并与其绑定。
可靠消息传递被中断,因为服务器不可用
集群可以最大限度地防止服务器变得不可用。它提供了高可用性服务端点,并且通过服务集成总线也为可靠消息传递层提供了高可用性。
有关为 Web Service 和消息传递引擎配置高可用性的更多信息,请参阅平衡工作负载和将消息传递引擎添加到集群。
在集群中运行多个可靠消息传递客户机应用程序时收到套接字超时错误
当多个应用程序使用同一个消息传递引擎时,会影响性能,在某些情况下,会导致超时错误。
有关为 Web Service 和消息传递引擎配置高可用性的更多信息,请参阅平衡工作负载和将消息传递引擎添加到集群。
服务器不可用后未恢复消息
当可靠消息传递层接收到请求消息时,它会发送一个应答,然后将该消息传递给目标服务。在应答请求消息之后但是在传递此消息之前,主管可靠消息传递层的服务器有可能变为不可用。在这种情况下,仅当您使用的是按顺序传递以及受管持久服务质量时,才会恢复消息。要指定按顺序传递,选择 WS-ReliableMessaging 策略选项以“以消息的发送顺序传递消息”,如配置 WS-ReliableMessaging 策略中所述。
异常消息声明安全上下文令牌无效
将可靠消息传递与持久 WS-I RSP 概要文件和 WS-SecureConversation 配合使用时,异常消息声明安全上下文令牌无效。
CWWSS7215E: 无法从高速缓存获取有效的安全上下文令牌。
要确保范围限定安全上下文令牌在 WS-ReliableMessaging 恢复并重新发送其消息前不会过期,请完成以下任务:将 WS-SecureConversation 配置为与 WS-ReliableMessaging 一起使用。
![[z/OS]](../images/ngzos.gif)
使用受管服务质量时,服务方区域发生超时异常结束
发生超时异常结束的原因可能是,sib.wsrm.tokenLockTimeout 定制属性的值设置得太大。此属性是在 WS-ReliableMessaging 策略绑定所指定的消息传递引擎上设置的。此值应该小于控制区域在结束不活动服务方区域前所等待的时间。请参阅服务集成定制属性主题以获取有关此属性的更多信息。