2014-01-08 3 views
1

에 추가 한 순서로 호출되지 않습니다 인터셉터 호출이 변경되고 항상 MyServiceLoggingInInterceptor가 먼저 호출됩니다.인터셉터 내가이 매뉴얼 인터셉터가 그들이 인터셉터

server.getInInterceptors().add(new LoggingInInterceptor()); 
server.getInInterceptors().add(new MyServiceLoggingInInterceptor()); 

CXF 인터셉터에 계층 구조가 있습니까? 또는 다른 주문을해야하는 경우 +

고마워요!

답변

2

CXF 인터셉터에는 프로세스가 삽입되는 위치를 결정하는 데 도움이되는 단계가 있습니다.

인바운드 및 아웃 바운드 단계의 순서를 보려면 this 페이지를 확인하십시오. LoggingInInterceptor 당신의 예에서

, 살펴보고 당신은 두 개 이상의 생성자가 나타납니다 :

public LoggingInInterceptor() { 
    super(Phase.RECEIVE); 
} 

public LoggingInInterceptor(String phase) { 
    super(phase); 
} 

당신은 즉, 첫 번째를 사용을 당신은 수신 단계에 있습니다. AbstractAuthorizingInInceptceptor는 PRE_INVOKE 단계에 있으며, 이후에 로깅 인터셉터가 항상 호출됩니다.

변경하려는 경우 인터셉터의 단계를 변경해야합니다. 두 개의 인터셉터가 같은 단계에 있다면, 그들이 추가 된 순서가 중요합니다.