컴포넌트는 모듈 외부의 서비스로 요청을 전송하기 위해
가져오기를 사용합니다. 요청 처리 중에 결함이 발생하면 서비스는 가져오기 바인딩에
결함을 리턴합니다. 가져오기 바인딩을 구성하여 결함을 처리하고 컴포넌트에
리턴하는 방법을 지정합니다.
WebSphere Integration Developer를 사용하여 가져오기 바인딩을 구성합니다.
결함 데이터 핸들러(또는 데이터 바인딩)를 지정할 수 있으며 결함 선택기도
지정합니다.
결함 데이터 핸들러
요청을 처리하는 서비스가
예외 또는 결함 데이터를 포함하는 응답 메시지 형식의
결함 정보를 가져오기 바인딩에 전송합니다.
가져오기 바인딩은 다음 그림에 표시되고 후속 섹션에 설명된 대로
서비스 예외 또는 응답 메시지를 서비스 비즈니스 예외 또는 서비스 런타임
예외로 변환합니다.
그림 1. 가져오기를 통해 서비스에서 컴포넌트로 결함 정보가
전송되는 방법
사용자 정의 데이터 핸들러 또는
데이터 바인딩을 작성하여 결함을 처리할 수 있습니다.
결함 선택기
가져오기 바인딩을 구성하면 결함
선택기를 지정할 수 있습니다. 결함 선택기는 가져오기 응답이 실제 응답인지,
비즈니스 예외인지 아니면 런타임 결함인지를 판별합니다. 또한 결함 선택기는
응답 본문 또는 헤더에서 기본 결함 이름을 판별하는데, 이 이름은
연관된 인터페이스에서 결함의 이름으로 바인딩 구성에 의해 맵핑됩니다.
사전 패키지화된 두 가지 유형의
결함 선택기가 JMS, MQ JMS,
일반 JMS,
WebSphere MQ 및 HTTP 가져오기에 사용 가능합니다.
표 1. 사전 패키지화된 결함 선택기결함 선택기 유형 |
설명 |
헤더 기반 |
응답 메시지가 비즈니스 결함, 런타임 예외인지, 아니면 수신 응답 메시지의 헤더에 근거한
일반 메시지인지 판별합니다. |
SOAP |
응답 SOAP 메시지가 일반 응답, 비즈니스 결함 또는 런타임 예외인지
판별합니다. |
다음에서는 헤더 기반 결함 선택기와
SOAP 결함 선택기의 예제를 표시합니다.
- 헤더 기반 결함 선택기
수신 메시지가 비즈니스 결함인지 응용프로그램에서 표시하게 하려면,
다음과 같이 표시되는 비즈니스 결함의 수신 메시지에 두 개의 헤더가 있어야 합니다.
Header name = FaultType, Header value = Business
Header name = FaultName, Header value = <user defined native fault name>
수신 응답 메시지가
런타임 예외임을 응용프로그램에서 표시하게 하려는 경우, 다음과 같이 표시되는 수신 메시지에 하나의 헤더가 있어야 합니다.
Header name = FaultType, Header value = Runtime
- SOAP 결함 선택기
비즈니스 결함은 다음과 같은 SOAP 헤더가 있는 SOAP 메시지의
일부로 전송될 수 있습니다. "CustomerAlreadyExists"는
이 경우 결함 이름입니다.
<ibmSoap:BusinessFaultName
xmlns:ibmSoap="http://www.ibm.com/soap">CustomerAlreadyExists
<ibmSoap:BusinessFaultName>
결함 선택기는
선택적입니다. 결함 선택기를 지정하지 않으면 가져오기 바인딩은 응답 유형을
판별할 수 없습니다. 그러므로 바인딩은 응답 유형을 비즈니스 응답으로 처리하며
응답 데이터 핸들러 또는 데이터 바인딩을 호출합니다.
사용자 정의 결함 선택기를
작성할 수 있습니다.
사용자 정의 결함 선택기 작성을 위한 단계는 WebSphere Integration Developer Information Center의
"사용자 정의 결함 선택기 개발" 주제에서 제공됩니다.
비즈니스 결함
비즈니스 결함은 요청 처리 시 오류가
있는 경우 발생할 수 있습니다. 예를 들어, 고객 작성 요청을 전송했을 때
해당 고객이 이미 있는 경우 서비스는 가져오기 바인딩에 비즈니스 예외를
전송합니다.
바인딩에 의해 비즈니스 예외가 수신되는 경우 해당
바인딩에 대해 결함 선택기가 설정되어 있는지 여부에 따라 처리 단계가
달라집니다.
- 결함 선택기가 설정되지 않은 경우 바인딩은 응답 데이터 핸들러나 데이터 바인딩을 호출합니다.
- 결함 선택기가 설정된 경우 다음 처리가 발생합니다.
- 가져오기 바인딩은 결함 선택기를 호출하여 응답이 비즈니스 결함, 비즈니스 응답 또는
런타임 결함인지 여부를 판별합니다.
- 응답이 비즈니스 결함이면, 가져오기 바인딩은 결함 선택기를 호출하여 기본 결함 이름을 제공합니다.
- 가져오기 바인딩은 결함 선택기가 리턴하는 기본 결함 이름에 해당하는 WSDL 결함을
판별합니다.
- 가져오기 바인딩은 이 WSDL 결함을 위해 구성되는 결함 데이터 핸들러를 판별합니다.
- 가져오기 바인딩은 결함 데이터를 사용하여 이 결함 데이터를 호출합니다.
- 결함 데이터 핸들러가 결함 데이터를 데이터 오브젝트로 변환하여 가져오기
바인딩에 리턴합니다.
- 가져오기 바인딩이 데이터 오브젝트 및 결함 이름을 사용하여 서비스 비즈니스
예외 오브젝트를 구성합니다.
- 가져오기가 서비스 비즈니스 예외 오브젝트를 컴포넌트에 리턴합니다.
런타임 예외
런타임 예외는 서비스와의 통신에
문제가 있는 경우 발생할 수 있습니다. 런타임
예외의 처리는
비즈니스 예외의 처리와 유사합니다. 결함 선택기가 설정된 경우 다음 처리가 발생합니다.
- 가져오기 바인딩은 예외 데이터를 이용하여 적절한
런타임 예외 데이터 핸들러를 호출합니다.
- 런타임 예외 데이터 핸들러는
예외 데이터를 서비스 런타임 예외 오브젝트로 변환하여
가져오기 바인딩으로 리턴합니다.
- 가져오기가 서비스 런타임 예외 오브젝트를 컴포넌트에 리턴합니다.