43.7. 处理容错消息
概述 复制链接链接已复制到粘贴板!
当消息处理期间引发 ProtocolException 异常时,处理程序使用 handleFault () 方法处理错误消息。
handleFault () 方法根据处理程序的类型接收 LogicalMessageContext 对象或 SOAPMessageContext 对象。接收的上下文为处理程序的实施提供了消息有效负载的实现。
handleFault () 方法返回 true 或 false,具体取决于消息处理方式。它还可能会抛出异常。
获取消息有效负载 复制链接链接已复制到粘贴板!
handleFault () 方法接收的上下文对象与 handleMessage () 方法收到的上下文对象类似。您可以使用上下文的 getMessage () 方法以同样的方式访问消息有效负载。唯一的区别是上下文中包含的有效负载。
有关使用 LogicalMessageContext 的更多信息,请参阅 第 43.3 节 “在逻辑处理程序中处理消息”。
有关使用 SOAPMessageContext 的更多信息,请参阅 第 43.5 节 “在 SOAP 处理程序中处理消息”。
确定返回值 复制链接链接已复制到粘贴板!
handleFault () 方法的完成其消息处理对消息处理方式具有直接影响。它通过执行以下操作之一完成:
- return true
-
返回容错处理应继续正常使用的真正信号。将调用链中下一个处理程序的
handleFault ()方法。 - 返回 false
-
返回错误处理停止的假信号。调用在处理当前消息的处理程序的
close ()方法会被调用,并且发送错误消息。 - 抛出异常
-
引发异常会停止容错消息处理。调用在处理当前消息的处理程序的
close ()方法会被调用,并且发送异常。
示例 复制链接链接已复制到粘贴板!
例 43.13 “在消息处理程序中处理故障” 显示 handleFault () 的实现,它将消息正文打印到屏幕。
例 43.13. 在消息处理程序中处理故障