43.7. 处理故障消息


概述

当消息处理过程中抛出 ProtocolException 异常时,处理程序使用 handleFault () 方法来处理 fault 消息。

handleFault () 方法根据处理程序的类型接收 LogicalMessageContext 对象或 SOAPMessageContext 对象。收到的上下文授予处理器对消息有效负载的实施访问权限。

handleFault () 方法返回 true 或 false,具体取决于故障消息处理如何进行。它还可能会抛出异常。

获取消息有效负载

handleFault () 方法接收的上下文对象与 handleMessage () 方法接收的上下文对象类似。您可以使用上下文的 getMessage () 方法以同样的方式访问消息有效负载。唯一的区别是上下文中所含的有效负载。

有关使用 LogicalMessageContext 的更多信息,请参阅 第 43.3 节 “处理逻辑处理程序中的消息”

有关使用 SOAPMessageContext 的更多信息,请参阅 第 43.5 节 “处理 SOAP 处理程序中的消息”

确定返回值

handleFault () 方法如何完成其消息处理对消息处理的方式有直接影响。它通过执行以下操作之一完成:

返回 true
返回错误处理的真正信号应该继续正常。将调用链中下一个处理程序的 handleFault () 方法。
返回错误
返回错误处理停止的假信号。在处理当前消息时调用的处理程序的 close () 方法会被调用,并分配错误消息。
抛出异常
引发异常会停止出错消息处理。在处理当前消息时调用的处理程序的 close () 方法会被调用,并分配异常。

示例

例 43.13 “处理消息处理程序中的故障” 显示 handleFault () 的实现,它将消息正文输出到屏幕。

例 43.13. 处理消息处理程序中的故障

public final boolean handleFault(LogicalMessageContext messageContext)
{
  System.out.println("handleFault() called with message:");

  LogicalMessage msg=messageContext.getMessage();
  System.out.println(msg.getPayload());

  return true;
}
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.