57.2. 인터셉터의 단계 지정

57.2.1. 개요

인터셉터는 단계로 구성됩니다. 인터셉터의 단계는 호출되는 메시지 처리 시퀀스의 시기를 결정합니다. 개발자는 인터셉터의 단계의 생성자를 지정합니다. 단계는 프레임워크에서 제공하는 상수 값을 사용하여 지정됩니다.

57.2.2. 단계

단계는 인터셉터의 논리 컬렉션입니다. 그림 57.1. “인터셉터 단계” 에 표시된 대로 단계 내의 인터셉터는 순차적으로 호출됩니다.

그림 57.1. 인터셉터 단계

인터셉터는 여러 단계로 연결됩니다.

단계는 주문 목록에 함께 연결되어 인터셉터 체인을 형성하고 메시지 처리 절차에 정의된 논리 단계를 제공합니다. 예를 들어 인바운드 인터셉터 체인의 RECEIVE 단계에 있는 인터셉터 그룹은 유선에서 선택한 원시 메시지 데이터를 사용하여 전송 수준 세부 정보를 처리합니다.

그러나 어떤 단계에서든 수행할 수 있는 작업은 적용되지 않습니다. 단계 내의 인터셉터는 단계의 정신에 있는 작업을 준수하는 것이 좋습니다.

Apache CXF에 의해 정의된 전체 단계 목록은 62장. Apache CXF 메시지 처리 단계 에서 확인할 수 있습니다.

57.2.3. 단계 지정

Apache CXF는 단계를 지정하는 데 사용할 org.apache.cxf.Phase 클래스를 제공합니다. 클래스는 상수의 컬렉션입니다.The class is a collection of constants. Apache CXF에 의해 정의된 각 단계는 단계 클래스에서 이에 해당하는 상수를 갖 습니다. 예를 들어 RECEIVE 단계는 value Phase.RECEIVE로 지정됩니다.

57.2.4. 단계 설정

인터셉터의 단계는 인터셉터 생성자에 설정됩니다. AbstractPhaseInterceptor 클래스는 인터셉터를 인스턴스화하기 위한 세 가지 생성자를 정의합니다.

  • 공용 AbstractPhaseInterceptor(String phase)- 인터셉터의 단계를 지정된 단계로 설정하고 인터셉터의 id를 인터셉터의 클래스 이름으로 자동으로 설정합니다.

    이 생성자는 대부분의 사용 사례를 충족합니다.

  • 공용 AbstractPhaseInterceptor(문자열 id, String 단계)- 인터셉터의 id를 첫 번째 매개 변수로 전달된 문자열로, 인터셉터의 단계를 두 번째 문자열로 설정합니다.
  • 공용 AbstractPhaseInterceptor(문자열 단계, 부울 uniqueId)- 인터셉터가 생성된 고유 id를 사용해야 하는지 여부를 지정합니다. uniqueId 매개변수가 true 이면 인터셉터의 ID가 시스템에 의해 계산됩니다. uniqueId 매개변수가 false 이면 인터셉터의 id가 인터셉터의 클래스 이름으로 설정됩니다.

사용자 정의 인터셉터의 단계를 설정하는 권장 방법은 예 57.1. “인터셉터의 단계 설정” 에 표시된 super() 메서드를 사용하여 AbstractPhaseInterceptor 생성자에 단계를 전달하는 것입니다.

예 57.1. 인터셉터의 단계 설정

import org.apache.cxf.message.Message;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;

public class StreamInterceptor extends AbstractPhaseInterceptor<Message>
 {

    public StreamInterceptor()
   {
     super(Phase.PRE_STREAM);
    }
}

예 57.1. “인터셉터의 단계 설정” 에 표시된 StreamInterceptor 인터셉터는 PRE_STREAM 단계에 배치됩니다.