CXF interceptor拦截顺序

Java代码  收藏代码
  1. org.apache.cxf.phase.PhaseManagerImpl中  
  2. final void createInPhases() {  
  3.         int i = 0;  
  4.   
  5.         inPhases = new SortedArraySet<Phase>();  
  6.         inPhases.add(new Phase(Phase.RECEIVE, ++i * 1000));  
  7.         inPhases.add(new Phase(Phase.PRE_STREAM, ++i * 1000));  
  8.         inPhases.add(new Phase(Phase.USER_STREAM, ++i * 1000));  
  9.         inPhases.add(new Phase(Phase.POST_STREAM, ++i * 1000));  
  10.         inPhases.add(new Phase(Phase.READ, ++i * 1000));  
  11.         inPhases.add(new Phase(Phase.PRE_PROTOCOL, ++i * 1000));  
  12.         inPhases.add(new Phase(Phase.USER_PROTOCOL, ++i * 1000));  
  13.         inPhases.add(new Phase(Phase.POST_PROTOCOL, ++i * 1000));  
  14.         inPhases.add(new Phase(Phase.UNMARSHAL, ++i * 1000));  
  15.         inPhases.add(new Phase(Phase.PRE_LOGICAL, ++i * 1000));  
  16.         inPhases.add(new Phase(Phase.USER_LOGICAL, ++i * 1000));  
  17.         inPhases.add(new Phase(Phase.POST_LOGICAL, ++i * 1000));  
  18.         inPhases.add(new Phase(Phase.PRE_INVOKE, ++i * 1000));  
  19.         inPhases.add(new Phase(Phase.INVOKE, ++i * 1000));  
  20.         inPhases.add(new Phase(Phase.POST_INVOKE, ++i * 1000));  
  21.     }  
  22.   
  23.     final void createOutPhases() {  
  24.   
  25.         outPhases = new SortedArraySet<Phase>();  
  26.         int i = 0;  
  27.   
  28.         outPhases.add(new Phase(Phase.SETUP, ++i * 1000));  
  29.         outPhases.add(new Phase(Phase.PRE_LOGICAL, ++i * 1000));  
  30.         outPhases.add(new Phase(Phase.USER_LOGICAL, ++i * 1000));  
  31.         outPhases.add(new Phase(Phase.POST_LOGICAL, ++i * 1000));  
  32.         outPhases.add(new Phase(Phase.PREPARE_SEND, ++i * 1000));  
  33.   
  34.         outPhases.add(new Phase(Phase.PRE_STREAM, ++i * 1000));  
  35.   
  36.         outPhases.add(new Phase(Phase.PRE_PROTOCOL, ++i * 1000));  
  37.   
  38.         outPhases.add(new Phase(Phase.WRITE, ++i * 1000));  
  39.         outPhases.add(new Phase(Phase.PRE_MARSHAL, ++i * 1000));  
  40.         outPhases.add(new Phase(Phase.MARSHAL, ++i * 1000));  
  41.         outPhases.add(new Phase(Phase.POST_MARSHAL, ++i * 1000));  
  42.   
  43.         outPhases.add(new Phase(Phase.USER_PROTOCOL, ++i * 1000));  
  44.         outPhases.add(new Phase(Phase.POST_PROTOCOL, ++i * 1000));  
  45.   
  46.         outPhases.add(new Phase(Phase.USER_STREAM, ++i * 1000));  
  47.         outPhases.add(new Phase(Phase.POST_STREAM, ++i * 1000));  
  48.   
  49.         outPhases.add(new Phase(Phase.SEND, ++i * 1000));  
  50.   
  51.         //Make sure ending interceptors are put in positions symmetric  
  52.         // to their starting interceptors  
  53.         outPhases.add(new Phase(Phase.SEND_ENDING, ++i * 1000));  
  54.           
  55.         outPhases.add(new Phase(Phase.POST_STREAM_ENDING, ++i * 1000));  
  56.         outPhases.add(new Phase(Phase.USER_STREAM_ENDING, ++i * 1000));  
  57.   
  58.         outPhases.add(new Phase(Phase.POST_PROTOCOL_ENDING, ++i * 1000));  
  59.         outPhases.add(new Phase(Phase.USER_PROTOCOL_ENDING, ++i * 1000));  
  60.   
  61.         outPhases.add(new Phase(Phase.MARSHAL_ENDING, ++i * 1000));  
  62.         outPhases.add(new Phase(Phase.WRITE_ENDING, ++i * 1000));  
  63.   
  64.         outPhases.add(new Phase(Phase.PRE_PROTOCOL_ENDING, ++i * 1000));  
  65.           
  66.         outPhases.add(new Phase(Phase.PRE_STREAM_ENDING, ++i * 1000));  
  67.   
  68.         outPhases.add(new Phase(Phase.PREPARE_SEND_ENDING, ++i * 1000));  
  69.         outPhases.add(new Phase(Phase.POST_LOGICAL_ENDING, ++i * 1000));  
  70.         outPhases.add(new Phase(Phase.USER_LOGICAL_ENDING, ++i * 1000));  
  71.         outPhases.add(new Phase(Phase.PRE_LOGICAL_ENDING, ++i * 1000));  
  72.         outPhases.add(new Phase(Phase.SETUP_ENDING, ++i * 1000));  
  73.   
  74.     }  

另外,如果级别一样,则按照配置的先后顺序进行拦截。顺序是<javaxws:interceptors></javaxws:interceptors>标签内出现的顺序。

原文地址:https://www.cnblogs.com/qiumingcheng/p/4807020.html