59장. Interceptors를 사용하도록 끝점 구성

초록

인터셉터는 메시지 교환에 포함될 때 끝점에 추가됩니다. 끝점의 인터셉터 체인은 Apache CXF 런타임에 있는 여러 구성 요소의 인터셉터 체인에서 구성됩니다. 인터셉터는 끝점의 구성 또는 런타임 구성 요소 중 하나에 지정됩니다. 인터셉터는 구성 파일 또는 인터셉터 API를 사용하여 추가할 수 있습니다.

59.1. 인터셉터 연결 위치 결정

59.1.1. 개요

인터셉터 체인을 호스팅하는 여러 런타임 오브젝트가 있습니다. 여기에는 다음이 포함됩니다.

  • endpoint 오브젝트
  • service 오브젝트
  • 프록시 오브젝트
  • 끝점 또는 프록시를 생성하는 데 사용되는 팩토리 오브젝트
  • 바인딩
  • 중앙 버스 오브젝트

개발자는 자체 인터셉터를 이러한 오브젝트에 연결할 수 있습니다. 인터셉터를 연결하는 가장 일반적인 오브젝트는 버스와 개별 끝점입니다. 올바른 오브젝트를 선택하려면 끝점을 만들기 위해 이러한 런타임 오브젝트를 결합하는 방법을 이해해야 합니다. 디자인에 따라 각 cxf 관련 번들에는 자체 cxf 버스가 있습니다. 따라서 인터셉터가 버스에 구성되어 있고 동일한 블루프린트 컨텍스트의 서비스를 다른 번들로 가져오거나 생성하는 경우 인터셉터는 처리되지 않습니다. 대신 가져온 서비스의 JAXWS 클라이언트 또는 엔드포인트에 직접 인터셉터를 구성할 수 있습니다.

59.1.2. 끝점 및 프록시

끝점 또는 프록시에 인터셉터를 연결하는 것이 인터셉터를 배치하는 가장 정교한 방법입니다. 끝점 또는 프록시에 직접 연결된 인터셉터는 특정 끝점 또는 프록시에만 적용됩니다. 이는 특정 서비스 구현과 관련된 인터셉터를 연결하는 좋은 장소입니다. 예를 들어 개발자가 단위를 지표에서 imperial로 변환하는 서비스 인스턴스를 노출하려는 경우 인터셉터를 하나의 엔드포인트에 직접 연결할 수 있습니다.

59.1.3. 팩토리

Spring 구성을 사용하여 끝점 또는 프록시를 생성하는 데 사용되는 팩토리에 인터셉터를 연결하면 인터셉터를 끝점 또는 프록시에 직접 연결하는 것과 동일한 효과가 있습니다. 그러나 인터셉터가 공장에 프로그래밍 방식으로 연결된 경우 공장에 연결된 인터셉터는 공장에서 생성한 모든 엔드포인트 또는 프록시로 전파됩니다.

59.1.4. 바인딩

인터셉터를 바인딩에 연결하면 개발자가 바인딩을 사용하는 모든 끝점에 적용되는 인터셉터 세트를 지정할 수 있습니다. 예를 들어 개발자가 특수 ID 요소를 포함하도록 원시 XML 바인딩을 사용하는 모든 끝점을 강제 적용하려는 경우 요소를 XML 바인딩에 추가하는 인터셉터를 연결할 수 있습니다.

59.1.5. 버스

인터셉터를 연결하는 가장 일반적인 위치는 버스입니다. 인터셉터가 버스에 연결되면 인터셉터가 해당 버스에서 관리하는 모든 끝점으로 전파됩니다. 버스에 인터셉터를 연결하는 것은 유사한 인터셉터 세트를 공유하는 끝점을 여러 개 생성하는 애플리케이션에서 유용합니다.

59.1.6. 첨부 파일 지점 결합

끝점의 인터셉터 체인의 마지막 세트는 나열된 오브젝트에서 제공하는 인터셉터 체인의 모호함이므로 나열된 여러 오브젝트를 단일 엔드 포인트 구성으로 결합할 수 있습니다. 예를 들어 애플리케이션이 검증 토큰에 대해 확인된 인터셉터가 모두 필요한 여러 끝점을 생성하는 경우 해당 인터셉터가 애플리케이션의 버스에 연결됩니다. 해당 끝점 중 하나에 유로를 달러로 변환한 인터셉터도 필요한 경우 변환 인터셉터가 특정 엔드포인트에 직접 연결됩니다.