WebSphere Enterprise Service Bus, 버전 6.2.0 운영 체제: AIX, HP-UX, i5/OS, Linux, Solaris, Windows


서비스 런타임 예외 처리

서비스 런타임 예외는 선언되지 않은 예외입니다. 일반적으로 응용프로그램에서 예기치 못한 오류 조건을 표시합니다.

서비스 런타임 예외는 런타임 시 예기치 못한 조건을 표시하는 데 사용됩니다.

컴포넌트 개발자는 서비스 런타임 예외를 다음과 같은 방법으로 처리합니다.

  1. 예외를 발견하고 대체 로직을 수행합니다.

    예를 들어, 한 파트너가 요청을 서비스할 수 없으면 다른 파트너가 수행할 수 있습니다.

  2. 예외를 발견하고 이 예외를 클라이언트에게 "re-throw"합니다.
  3. 예외를 비즈니스 예외로 재맵핑합니다.

    예를 들어, 파트너에 대한 제한시간으로 인해 대부분의 요청이 처리되었지만 완료되지 않은 요청이 하나 있어서 나중에 재시도하거나 다른 매개변수로 시도해야 함을 표시하는 비즈니스 예외가 발생할 수 있습니다.

예외가 발생하지 않으면 예외가 현재 컴포넌트를 호출한 컴포넌트로 전달됩니다. 이 호출 체인은 체인의 원래 호출자로 다시 계속됩니다. 예를 들어, Module AModule B를 호출하고 Module BModule C를 호출하면 Module C는 예외를 처리하고 Module B는 예외를 발견하거나 발견하지 않을 수 있습니다. Module B가 예외를 발견하지 않으면 예외가 Module A로 돌아갑니다.

컴포넌트에서 ServiceRuntimeException이 처리된 경우 현재 트랜잭션이 롤백됩니다. 이 유형의 예외 처리는 체인의 모든 컴포넌트에 대해 반복됩니다. 예를 들어, Module C에서 ServiceRuntimeException이 발생하면 해당 트랜잭션이 롤백을 위해 표시됩니다. 그런 다음 예외가 Module B로 전달됩니다. 모듈 B에서 예외가 발견되지 않고 다른 트랜잭션이 없는 경우 해당 트랜잭션도 롤백됩니다. 컴포넌트 개발자는 서비스 품질(QoS) 규정자를 사용하여 호출이 현재 트랜잭션에서 발생하는지 또는 새 트랜잭션에서 발생하는지 여부를 제어할 수 있습니다. 따라서 Module AModule B를 호출하고 Module B가 새 트랜잭션의 일부분인 경우 Module AModule B에서 ServiceRuntimeException을 "발견"하고 Module A의 트랜잭션을 롤백하지 않고 처리를 계속합니다.

주: 런타임 예외가 인터페이스 파트로 선언되지 않았으므로 컴포넌트 개발자가 예외를 해결해야 하고 클라이언트가 사용자 인퍼페이스인 경우 런타임 예외가 부주의하게 클라이언트에게 전달되지 않도록 방지합니다.

롤백된 트랜잭션의 컨텐츠는 트랜잭션의 특성에 따라 다를 수 있다는 점을 유의해야 합니다. 예를 들어, 장기 실행 중인 BPEL 프로세스를 여러 개의 작은 트랜잭션으로 세그먼트화할 수 있습니다. 비동기 요청 및 응답 호출이 트랜잭션에서 자동으로 시작됩니다(그렇지 않으면 호출하는 응용프로그램이 응답을 받기 위해 오래 기다려야 함).

트랜잭션이 여러 개의 비동기 호출로 구분되는 인스턴스에서(하나의 대형 트랜잭션과 반대의 경우) 트랜잭션의 초기 작업은 ServiceRuntimeException 발생 시 롤백됩니다. 그러나 비동기 호출의 응답은 다른 트랜잭션에서 전송되며 비동기 호출의 응답이 이동할 수 있는 위치가 없으므로 실패 이벤트 관리자(FEM)에 이벤트가 작성됩니다.

다음 목록은 ServiceRuntimeException의 현재 서브클래스 4개입니다.

  1. ServiceExpirationRuntimeException

    이 예외는 비동기 SCA 메시지가 만기되었음을 표시하는 데 사용됩니다. 만기 시간은 서비스 참조의 RequestExpiration 규정자를 사용하여 설정할 수 있습니다.

  2. ServiceTimeoutRuntimeException

    이 예외는 비동기 요청에 대한 응답이 구성 기간 내에 수신되지 않았음을 표시하는 데 사용됩니다. 만기 시간은 서비스 참조의 ResponseExpiration 규정자를 사용하여 설정할 수 있습니다.

  3. ServiceUnavailableException

    이 예외는 가져오기를 통해 외부 서비스를 호출하는 동안 예외가 발생했음을 표시하는 데 사용됩니다.

  4. ServiceUnwiredReferenceRuntimeException

    이 예외는 컴포넌트에서 서비스 참조가 올바르게 연결되지 않았음을 표시하는 데 사용됩니다.


concept 개념 주제

이용약관 | 피드백


시간소인 아이콘 마지막 갱신 날짜: 2010년 7월 7일 수요일


http://publib.boulder.ibm.com/infocenter/dmndhelp/v6r2mx/topic//com.ibm.websphere.wesb620.doc/doc/crec_srexceptions.html
Copyright IBM Corporation 2005, 2010. All Rights Reserved.
이 Information Center는 Eclipse 기술을 기반으로 합니다(http://www.eclipse.org 웹 사이트 참조).