我们可以在同一阶段有多个 CXF 拦截器吗
Can we have multiple CXF interceptors in same phase
我已经创建了一个拦截器,它将针对 UNMARSHAL 阶段的 MultiPart 请求执行其特定逻辑,对于这个阶段,完全有一个不同的 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");
}
}
每个阶段可以包含任意数量的拦截器,当在一个阶段中发现多个拦截器时,它们将按照添加的顺序执行
<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)
我已经创建了一个拦截器,它将针对 UNMARSHAL 阶段的 MultiPart 请求执行其特定逻辑,对于这个阶段,完全有一个不同的 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");
}
}
每个阶段可以包含任意数量的拦截器,当在一个阶段中发现多个拦截器时,它们将按照添加的顺序执行
<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)