Можем ли мы иметь несколько перехватчиков CXF в одной фазе

#java #cxf #interceptor

#java #cxf #перехватчик

Вопрос:

Я создал перехватчик, который будет выполнять свою специфическую логику для составного запроса для фазы UNMARSHAL, для этой фазы существует совершенно другой перехватчик CXF, в котором я не хочу писать свою логику.

Мой вопрос в том, можем ли мы создать несколько перехватчиков CXF для одной фазы? Если да, то в каком порядке они вызываются, как показано, например, ниже

Например.

 public class Interceptor1 extends AbstractPhaseInterceptor<Message> {

        public Interceptor1 () {
        super(Phase.UNMARSHAL);
        }
       @Override
      public void handleMessage(Message message) throws Fault {
          System.out.println("Interceptor1");
      }

}

public class Interceptor2 extends AbstractPhaseInterceptor<Message> {

        public Interceptor2 () {
        super(Phase.UNMARSHAL);
        }
         @Override
      public void handleMessage(Message message) throws Fault {
          System.out.println("Interceptor2");
      }

}
  

Ответ №1:

Каждая фаза может содержать столько перехватчиков, сколько вы хотите, когда в фазе найдено более одного перехватчика, они будут выполняться в порядке их добавления

  <bean id="cxf" class="org.apache.cxf.bus.CXFBusImpl">
        <property name="inInterceptors">
            <ref bean="MyInterceptor"/>
            <ref bean="OtherInterceptor"/>
        </property>
        <property name="outInterceptors">
            <ref bean="MyInterceptor"/>
        </property>
    </bean> 
  

MyInterceptor(1) -> OtherInterceptor(2)