55.3. Unwinding after an error
Overview
When an error occurs during the execution of an interceptor chain, the runtime stops traversing the interceptor chain and unwinds the chain by calling the
handleFault()
method of any interceptors in the chain that have already been executed.
The
handleFault()
method can be used to clean up any resources used by an interceptor during normal message processing. It can also be used to rollback any actions that should only stand if message processing completes successfully. In cases where the fault message will be passed on to an outbound fault processing interceptor chain, the handleFault()
method can also be used to add information to the fault message.
Getting the message payload
The
handleFault()
method receives the same Message
object as the handleMessage()
method used in normal message processing. Getting the message contents from the Message
object is described in the section called “Getting the message contents”.
Example
Example 55.5, “Handling an unwinding interceptor chain” shows code used to ensure that the original XML stream is placed back into the message when the interceptor chain is unwound.
Example 55.5. Handling an unwinding interceptor chain
@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); } }