您的位置:首页 > 其它

CXF interceptor拦截顺序

2015-09-14 14:11 260 查看

CXF Interceptor中Phase的先后顺序

Java代码


org.apache.cxf.phase.PhaseManagerImpl中

final void createInPhases() {

int i = 0;

inPhases = new SortedArraySet<Phase>();

inPhases.add(new Phase(Phase.RECEIVE, ++i * 1000));

inPhases.add(new Phase(Phase.PRE_STREAM, ++i * 1000));

inPhases.add(new Phase(Phase.USER_STREAM, ++i * 1000));

inPhases.add(new Phase(Phase.POST_STREAM, ++i * 1000));

inPhases.add(new Phase(Phase.READ, ++i * 1000));

inPhases.add(new Phase(Phase.PRE_PROTOCOL, ++i * 1000));

inPhases.add(new Phase(Phase.USER_PROTOCOL, ++i * 1000));

inPhases.add(new Phase(Phase.POST_PROTOCOL, ++i * 1000));

inPhases.add(new Phase(Phase.UNMARSHAL, ++i * 1000));

inPhases.add(new Phase(Phase.PRE_LOGICAL, ++i * 1000));

inPhases.add(new Phase(Phase.USER_LOGICAL, ++i * 1000));

inPhases.add(new Phase(Phase.POST_LOGICAL, ++i * 1000));

inPhases.add(new Phase(Phase.PRE_INVOKE, ++i * 1000));

inPhases.add(new Phase(Phase.INVOKE, ++i * 1000));

inPhases.add(new Phase(Phase.POST_INVOKE, ++i * 1000));

}

final void createOutPhases() {

outPhases = new SortedArraySet<Phase>();

int i = 0;

outPhases.add(new Phase(Phase.SETUP, ++i * 1000));

outPhases.add(new Phase(Phase.PRE_LOGICAL, ++i * 1000));

outPhases.add(new Phase(Phase.USER_LOGICAL, ++i * 1000));

outPhases.add(new Phase(Phase.POST_LOGICAL, ++i * 1000));

outPhases.add(new Phase(Phase.PREPARE_SEND, ++i * 1000));

outPhases.add(new Phase(Phase.PRE_STREAM, ++i * 1000));

outPhases.add(new Phase(Phase.PRE_PROTOCOL, ++i * 1000));

outPhases.add(new Phase(Phase.WRITE, ++i * 1000));

outPhases.add(new Phase(Phase.PRE_MARSHAL, ++i * 1000));

outPhases.add(new Phase(Phase.MARSHAL, ++i * 1000));

outPhases.add(new Phase(Phase.POST_MARSHAL, ++i * 1000));

outPhases.add(new Phase(Phase.USER_PROTOCOL, ++i * 1000));

outPhases.add(new Phase(Phase.POST_PROTOCOL, ++i * 1000));

outPhases.add(new Phase(Phase.USER_STREAM, ++i * 1000));

outPhases.add(new Phase(Phase.POST_STREAM, ++i * 1000));

outPhases.add(new Phase(Phase.SEND, ++i * 1000));

//Make sure ending interceptors are put in positions symmetric

// to their starting interceptors

outPhases.add(new Phase(Phase.SEND_ENDING, ++i * 1000));

outPhases.add(new Phase(Phase.POST_STREAM_ENDING, ++i * 1000));

outPhases.add(new Phase(Phase.USER_STREAM_ENDING, ++i * 1000));

outPhases.add(new Phase(Phase.POST_PROTOCOL_ENDING, ++i * 1000));

outPhases.add(new Phase(Phase.USER_PROTOCOL_ENDING, ++i * 1000));

outPhases.add(new Phase(Phase.MARSHAL_ENDING, ++i * 1000));

outPhases.add(new Phase(Phase.WRITE_ENDING, ++i * 1000));

outPhases.add(new Phase(Phase.PRE_PROTOCOL_ENDING, ++i * 1000));

outPhases.add(new Phase(Phase.PRE_STREAM_ENDING, ++i * 1000));

outPhases.add(new Phase(Phase.PREPARE_SEND_ENDING, ++i * 1000));

outPhases.add(new Phase(Phase.POST_LOGICAL_ENDING, ++i * 1000));

outPhases.add(new Phase(Phase.USER_LOGICAL_ENDING, ++i * 1000));

outPhases.add(new Phase(Phase.PRE_LOGICAL_ENDING, ++i * 1000));

outPhases.add(new Phase(Phase.SETUP_ENDING, ++i * 1000));

}

另外,如果级别一样,则按照配置的先后顺序进行拦截。顺序是<javaxws:interceptors></javaxws:interceptors>标签内出现的顺序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: