55장. Apache CXF Runtime의 인터셉터


초록

Apache CXF 런타임의 대부분의 기능은 인터셉터에 의해 구현됩니다. Apache CXF 런타임에서 생성한 모든 엔드포인트에는 메시지를 처리하기 위한 세 가지 잠재적인 인터셉터 체인이 있습니다. 이러한 체인의 인터셉터는 유선 간에 전송된 원시 데이터와 엔드포인트의 구현 코드에서 처리하는 Java 오브젝트 간에 메시지를 변환하는 역할을 합니다. 인터셉터는 적절한 순서로 처리가 이루어지도록 단계별로 구성됩니다.

55.1. 개요

Apache CXF의 많은 부분에서는 메시지 처리 작업이 포함됩니다. 소비자가 원격 서비스를 호출할 때 런타임은 데이터를 사용할 수 있는 메시지로 마샬링해야 하며, 이를 차선에 배치해야 합니다. 서비스 공급자는 메시지를 분리하고, 비즈니스 논리를 실행하고, 응답을 적절한 메시지 형식으로 마샬링해야 합니다. 그런 다음 소비자는 응답 메시지를 분리하고 적절한 요청과 상관 관계를 맺고 소비자의 애플리케이션 코드로 다시 전달해야 합니다. Apache CXF 런타임은 기본 마샬링 및 비마일링 외에도 메시지 데이터를 사용하여 여러 가지 다른 작업을 수행할 수 있습니다. 예를 들어 WS-RM이 활성화된 경우 런타임은 메시지를 마샬링하고 축소하기 전에 메시지 청크 및 승인 메시지를 처리해야 합니다. 보안이 활성화된 경우 런타임은 메시지 처리 순서의 일부로 메시지의 자격 증명을 확인해야 합니다.

그림 55.1. “Apache CXF 인터셉터 체인” 서비스 공급자가 요청 메시지를 수신할 때 걸리는 기본 경로를 표시합니다.

그림 55.1. Apache CXF 인터셉터 체인

인터셉터 체인 내 및 아웃 인터셉터 체인을 사용하여 끝점 표시

55.2. Apache CXF에서 메시지 처리

Apache CXF에서 개발한 소비자가 원격 서비스를 호출하면 다음과 같은 메시지 처리 시퀀스가 시작됩니다.

  1. Apache CXF 런타임은 요청을 처리하기 위해 아웃바운드 인터셉터 체인을 생성합니다.
  2. 호출이 양방향 메시지 교환을 시작하면 런타임은 인바운드 인터셉터 체인과 오류 처리 인터셉터 체인을 생성합니다.
  3. 요청 메시지는 아웃바운드 인터셉터 체인을 통해 순차적으로 전달됩니다.

    체인의 각 인터셉터는 메시지에서 일부 처리를 수행합니다. 예를 들어 Apache CXF가 message를 통해 message를 포함시키고, Apache CXF가 message를 전송했습니다.

  4. 아웃바운드 체인의 인터셉터 중 하나가 오류 조건을 생성하는 경우 체인은 예기치 않고 제어가 애플리케이션 수준 코드로 반환됩니다.

    인터셉터 체인은 이전에 호출한 모든 인터셉터에서 fault 처리 방법을 호출하여 적용되지 않습니다.

  5. 요청이 적절한 서비스 공급자에게 전달됩니다.
  6. 응답이 수신되면 인바운드 인터셉터 체인을 통해 순차적으로 전달됩니다.

    참고

    응답이 오류 메시지이면 오류 처리 인터셉터 체인으로 전달됩니다.

  7. 인바운드 체인의 인터셉터 중 오류 조건을 생성하는 경우 체인은 예기치 않은 것입니다.
  8. 메시지가 인바운드 인터셉터 체인의 끝에 도달하면 애플리케이션 코드로 다시 전달됩니다.

Apache CXF에서 개발한 서비스 공급자가 소비자로부터 요청을 수신하면 유사한 프로세스가 수행됩니다.

  1. Apache CXF 런타임은 요청 메시지를 처리하기 위해 인바운드 인터셉터 체인을 생성합니다.
  2. 요청이 양방향 메시지 교환의 일부인 경우 런타임은 아웃바운드 인터셉터 체인과 오류 처리 인터셉터 체인을 생성합니다.
  3. 요청은 인바운드 인터셉터 체인을 통해 순차적으로 전달됩니다.
  4. 인바운드 체인의 인터셉터 중 하나가 오류 조건을 생성하는 경우 체인은 예기치 않고 결함을 소비자에게 디스패치합니다.

    인터셉터 체인은 이전에 호출한 모든 인터셉터에서 fault 처리 방법을 호출하여 적용되지 않습니다.

  5. 요청이 인바운드 인터셉터 체인의 끝에 도달하면 서비스 구현에 전달됩니다.
  6. 응답이 준비되면 아웃바운드 인터셉터 체인을 통해 순차적으로 전달됩니다.

    참고

    응답이 예외인 경우 오류 처리 인터셉터 체인을 통해 전달됩니다.

  7. 아웃바운드 체인의 인터셉터가 오류 조건을 생성하는 경우 체인은 예기치 않고 오류 메시지가 전달됩니다.
  8. 요청이 아웃바운드 체인의 끝에 도달하면 소비자에게 전달됩니다.

55.3. 인터셉터

Apache CXF 런타임의 모든 메시지 처리는 인터셉터 에 의해 수행됩니다. 인터셉터는 애플리케이션 계층에 전달하기 전에 메시지 데이터에 액세스할 수 있는 Cryostat입니다. 메시지 변환, 메시지 제거 또는 메시지 데이터 검증 등 여러 작업을 수행할 수 있습니다. 예를 들어 인터셉터는 메시지 외부에서 보안 헤더를 읽고 외부 보안 서비스에 대한 자격 증명을 검증하고 메시지 처리를 계속할 수 있는지 결정할 수 있습니다.

인터셉터에서 사용할 수 있는 메시지 데이터는 다음과 같은 몇 가지 요인에 의해 결정됩니다.

  • 인터셉터의 체인
  • 인터셉터의 단계
  • 체인의 앞부분에서 발생하는 다른 인터셉터

55.4. 단계

인터셉터는 단계로 구성됩니다. 단계는 공통 기능을 사용하는 인터셉터의 논리 그룹입니다. 각 단계는 특정 유형의 메시지 처리를 담당합니다. 예를 들어 애플리케이션 계층에 전달되는 마샬링된 Java 오브젝트를 처리하는 인터셉터는 모두 동일한 단계에서 수행됩니다.

55.5. 인터셉터 체인

단계는 인터셉터 체인에 집계됩니다. 인터셉터 체인은 메시지가 인바운드인지 아웃바운드인지 여부에 따라 정렬되는 인터셉터 단계 목록입니다.

Apache CXF를 사용하여 생성된 각 끝점에는 세 가지 인터셉터 체인이 있습니다.

  • 인바운드 메시지에 대한 체인
  • 아웃 바운드 메시지를 위한 체인
  • 오류 메시지에 대한 체인

인터셉터 체인은 주로 엔드포인트에서 사용하는 바인딩 및 전송 선택에 따라 구성됩니다. 보안 또는 로깅과 같은 기타 런타임 기능을 추가하면 체인에 인터셉터도 추가됩니다. 개발자는 구성을 사용하여 체인에 사용자 정의 인터셉터를 추가할 수도 있습니다.

55.6. 인터셉터 개발

인터셉터의 기능에 관계없이 항상 동일한 기본 절차를 따릅니다.

  1. 56장. Interceptor API

    Apache CXF는 사용자 지정 인터셉터를 보다 쉽게 개발할 수 있도록 다양한 추상 인터셉터를 제공합니다.

  2. 57.2절. “인터셉터의 단계 지정”

    인터셉터는 메시지의 특정 부분을 사용할 수 있어야 하며 데이터가 특정 형식으로 되어 있어야 합니다. 메시지의 내용과 데이터 형식은 인터셉터의 단계에 따라 부분적으로 결정됩니다.

  3. 57.3절. “단계에서 인터셉터 배치 제한”

    일반적으로 단계 내에서 인터셉터의 순서가 중요하지 않습니다. 그러나 특정 상황에서는 인터셉터가 동일한 단계의 다른 인터셉터 이전 또는 이후에 실행되도록 하는 것이 중요할 수 있습니다.

  4. 58.2절. “메시지 처리”
  5. 58.3절. “오류 후 축소 해제”

    인터셉터가 실행된 후 활성 인터셉터 체인에서 오류가 발생하면 오류 처리 논리가 호출됩니다.

  6. 59장. 인터셉터를 사용하도록 끝점 구성
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.