58.3. 오류 후 축소 해제
58.3.1. 개요
인터셉터 체인을 실행하는 동안 오류가 발생하면 런타임은 인터셉터 체인을 트래버스하는 것을 중지하고 이미 실행된 체인에 있는 모든 인터셉터의 handleFault()
메서드를 호출하여 체인을 되돌립니다.
handleFault()
메서드는 일반 메시지 처리 중에 인터셉터가 사용하는 모든 리소스를 정리하는 데 사용할 수 있습니다. 메시지 처리가 성공적으로 완료된 경우에만 대기해야 하는 모든 작업을 롤백하는 데 사용할 수도 있습니다. 오류 메시지가 아웃바운드 오류 처리 인터셉터 체인에 전달되는 경우 handleFault()
메서드를 사용하여 결함 메시지에 정보를 추가할 수도 있습니다.
58.3.2. 메시지 페이로드 가져오기
handleFault()
메서드는 일반 메시지 처리에 사용되는 handleMessage()
메서드와 동일한 Message 오브젝트를 수신합니다. Message 오브젝트에서 메시지 내용을 가져오는 방법은 “메시지 콘텐츠 가져오기” 에 설명되어 있습니다.
58.3.3. 예
예 58.5. “감지되지 않은 인터셉터 체인 처리” 인터셉터 체인이 예기치 않은 경우 원래 XML 스트림이 메시지로 다시 배치되도록 하는 데 사용되는 코드를 표시합니다.Shows code used to ensure that the original XML stream is placed back into the message when the interceptor chain is unwound.
예 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); } }