58.3. 오류 후 정리 취소

58.3.1. 개요

인터셉터 체인을 실행하는 동안 오류가 발생하면 런타임에서 인터셉터 체인을 트래버스하는 것을 중지하고 이미 실행된 체인의 인터셉터의 handleFault() 메서드를 호출하여 체인을 보류 해제합니다.

handleFault() 메서드를 사용하여 일반 메시지 처리 중에 인터셉터에서 사용하는 리소스를 정리할 수 있습니다. 또한 메시지 처리가 성공적으로 완료된 경우에만 대기해야 하는 작업을 롤백하는 데 사용할 수도 있습니다. 오류 메시지가 아웃바운드 오류 처리 인터셉터 체인에 전달될 경우 handleFault() 메서드를 사용하여 오류 메시지에 정보를 추가할 수도 있습니다.

58.3.2. 메시지 페이로드 가져오기

handleFault() 메서드는 일반 메시지 처리에 사용되는 handleMessage() 메서드와 동일한 Message 개체를 받습니다. Message 오브젝트에서 메시지 내용 가져오기는 “메시지 콘텐츠 가져오기” 에 설명되어 있습니다.

58.3.3. 예제

예 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);
  }
}