Java 未按正确顺序调用CXF侦听器
我有4个cxf拦截器,每个拦截器都扩展了AbstractPhaseInterceptor。我按以下方式订购: A类:Java 未按正确顺序调用CXF侦听器,java,cxf,Java,Cxf,我有4个cxf拦截器,每个拦截器都扩展了AbstractPhaseInterceptor。我按以下方式订购: A类: public class AInterceptor extends AbstractPhaseInterceptor<Message> { public AuthenticationInterceptor() { super(Phase.PRE_INVOKE); super.addAfter(OInInterceptor.c
public class AInterceptor extends AbstractPhaseInterceptor<Message> {
public AuthenticationInterceptor() {
super(Phase.PRE_INVOKE);
super.addAfter(OInInterceptor.class.getName());
super.addAfter(HInterceptor.class.getName());
}
public void handleMessage(Message message) throws Fault {
System.out.println("Into AInterceptor");
System.out.println(super.getAfter()); //This is what prints the last line.
}
}
公共类AInterceptor扩展AbstractPhaseInterceptor{
公共身份验证侦听器(){
超级(阶段前调用);
super.addAfter(OInInterceptor.class.getName());
super.addAfter(HInterceptor.class.getName());
}
public void handleMessage(消息消息消息)引发错误{
System.out.println(“输入到AInterceptor”);
System.out.println(super.getAfter());//这是打印最后一行的内容。
}
}
H类:
public class HInterceptor extends AbstractPhaseInterceptor<Message> {
public HInterceptor() {
super(Phase.PRE_INVOKE);
super.addBefore(PInterceptor.class.getName());
}
public void handleMessage(Message message) throws Fault {
System.out.println("Into HInterceptor ...");
}
}
公共类HInterceptor扩展AbstractPhaseInterceptor{
公共提示器(){
超级(阶段前调用);
super.addBefore(PInterceptor.class.getName());
}
public void handleMessage(消息消息消息)引发错误{
System.out.println(“进入提示接收器…”);
}
}
O类:
public class OInterceptor extends AbstractPhaseInterceptor<Message> {
private ServerPolicyEvaluator serverPolicyEvaluator;
public OrderZeroPolicyInInterceptor() {
super(Phase.PRE_INVOKE);
super.addBefore(PInterceptor.class.getName());
super.addAfter(HInterceptor.class.getName());
}
@Override
public void handleMessage(Message message) throws Fault {
System.out.println("Into OInterceptor ...");
}
}
公共类OInterceptor扩展AbstractPhaseInterceptor{
专用服务器PolicyEvaluator服务器PolicyEvaluator;
公共订单ZeroPolicyInInterceptor(){
超级(阶段前调用);
super.addBefore(PInterceptor.class.getName());
super.addAfter(HInterceptor.class.getName());
}
@凌驾
public void handleMessage(消息消息消息)引发错误{
System.out.println(“Into OInterceptor…”);
}
}
p类:
public class PInterceptor extends AbstractPhaseInterceptor<Message> {
public PInterceptor() {
super(Phase.PRE_INVOKE);
super.addAfter(HInterceptor.class.getName());
}
public void handleMessage(Message message) throws Fault {
System.out.println("Into PInterceptor ...");
}
}
公共类PInterceptor扩展了AbstractPhaseInterceptor{
公共PInterceptor(){
超级(阶段前调用);
super.addAfter(HInterceptor.class.getName());
}
public void handleMessage(消息消息消息)引发错误{
System.out.println(“输入PInterceptor…”);
}
}
但是,当我运行应用程序时,会得到以下输出:
进入“暗示者”。。。
变成一个接受者
[com.xyz.interceptors.H,com.xyz.interceptors.O]
OInterceptor应该在AInterceptor之前执行。为什么拦截器的执行顺序不正确