58.3. 出错后取消卷
概述
当执行拦截器链期间发生错误时,运行时会停止遍历拦截器链,并通过调用已执行的链中任何拦截器的 handleFault
() 方法来遍历链。
handleFault ()
方法可用于在正常消息处理过程中清理拦截器使用的任何资源。它还可用于回滚只有在消息处理成功完成时才应遵循的任何操作。如果故障消息将传递到出站故障处理拦截器链,则 handleFault ()
方法也可用于向故障消息添加信息。
获取消息有效负载
handleFault ()
方法接收与正常消息处理中使用的 handleMessage ()
方法相同的 Message 对象。“获取消息内容”一节 中描述了从 Message 对象获取消息内容。
示例
例 58.5 “处理未卷拦截器链” 显示用来确保在拦截器链 unwound 时,用来确保原始 XML 流重新放入消息的代码。
例 58.5. 处理未卷拦截器链
@Override public void handleFault(SoapMessage message) { super.handleFault(message); XMLStreamWriter writer = (XMLStreamWriter)message.get(ORIGINAL_XML_WRITER); if (writer != null) { message.setContent(XMLStreamWriter.class, writer); } }