`
caniggia1986
  • 浏览: 151685 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

CXF Interceptor中Phase的先后顺序

阅读更多
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));

    }
分享到:
评论

相关推荐

    使用CXF Interceptor&Feature

    首先,Interceptor是CXF框架中的一个核心组件,它允许我们在服务调用的生命周期中插入自定义的行为。拦截器可以拦截并处理消息的发送和接收,从而提供了一种灵活的方式来扩展或增强服务的功能。例如,我们可以通过...

    CXF拦截器(Interceptor)的使用

    标题:“CXF拦截器(Interceptor)的使用” 描述:“讲解了cxf实现拦截器的原因、核心API及使用方法” 在深入探讨CXF拦截器的使用之前,我们首先需要理解其在CXF框架中的核心作用与价值。Apache CXF是一个开源框架,...

    CXF发布WebService加入拦截器

    在Java世界中,Apache CXF是一个广泛使用的开源框架,它允许开发者创建和消费Web服务。当我们谈论"CXF发布WebService加入拦截器"时,这涉及到在CXF服务端和客户端增加拦截器来增强服务功能和控制流程。拦截器是CXF...

    cxf使用中编码问题

    在IT行业中,尤其是在Web服务开发领域,CXF是一个广泛应用的开源框架,用于构建和开发SOAP和RESTful服务。当我们处理中文或者其他非ASCII字符时,编码问题可能会成为一个棘手的问题。"cxf使用中编码问题"这个主题...

    CXF使用EndpointImpl发布WebService加入拦截器

    在提供的压缩包文件中,`WebService_CXF_Interceptor_Client_3`和`WebService_CXF_Interceptor_Server_3`可能包含了客户端和服务端的示例代码。这些示例可能展示了如何创建自定义拦截器,以及如何在`EndpointImpl`中...

    WebService_CXF实现及ANT

    在这个主题中,我们将深入探讨CXF的Interceptor拦截器、处理复杂类型对象的传递以及如何结合Spring进行集成,最后我们将学习如何使用ANT工具快速构建和部署CXF工程。 1. CXF Interceptor拦截器: 拦截器是CXF框架...

    webservice的cxf框架拦截器demo

    在CXF中,我们可以通过实现`org.apache.cxf.interceptor.Fault`和`org.apache.cxf.phase.Phase`接口,然后将这些拦截器添加到服务端的拦截器链中。 接着,客户端拦截器(inter_client)同样重要。它们允许我们在...

    CXF3.0+Spring3.2 自定义拦截器

    2. **自定义拦截器实现**:你可以通过实现`org.apache.cxf.interceptor.Fault`和`org.apache.cxf.phase.Phase`接口来自定义拦截器。`Phase`接口定义了拦截器执行的阶段,如PRE_INVOKE、POST_INVOCATION等。每个拦截...

    CXF打印SOAP报文,记录WebService日志

    import org.apache.cxf.phase.Phase; public class InInterceptor extends AbstractPhaseInterceptor&lt;Message&gt; { private int limit = 102400; public int getLimit() { return limit; } public void set...

    cxf的jar包

    CXF(CXF: Composite eXtensible Services Framework)是一个开源的Java框架,它用于构建和开发服务导向架构(SOA)中的Web服务。CXF允许开发者以他们选择的语言(如Java)编写服务端和客户端代码,同时支持多种Web...

    cxf和对Interceptor的支持和传递复杂对象的小例子

    这里的Interceptor就和Filter、Struts的Interceptor很类似,提供它的主要作用就是为了很好的降低代码的耦合性,提供代码的内聚性。以HelloWorldService为例子。 参照网址:...

    cxf开发指南

    1. Interceptor 是 CXF 中的一种机制,它允许开发者在 WebService 的生命周期中执行自定义的逻辑。 2. CXF 提供了多种类型的 Interceptor,包括: * LoggingInterceptor:用于记录 WebService 的调用日志 * ...

    CXF WebService带有拦截器

    你可以继承`org.apache.cxf.interceptor.FaultInterceptor`或`org.apache.cxf.interceptor.AbstractFaultInterceptor`类,并重写其`handleMessage`方法来插入自己的逻辑。然后,你需要在服务端或客户端的配置中注册...

    webservice的cxf框架拦截器demo.rar

    在CXF服务端,你可以通过实现`org.apache.cxf.interceptor.Fault`和`org.apache.cxf.phase.PhaseInterceptorChain`接口的类来创建自定义拦截器,并将它们添加到服务的拦截器链中。 4. **“inter_client”**: 这...

    08.CXF拦截器的理论以及如何为CXF的客户端和服务器端添加拦截器

    拦截器是CXF框架中的一个重要组成部分,允许开发者在服务调用的生命周期中插入自定义逻辑,实现如日志记录、安全检查、性能监控等功能。本篇将深入探讨CXF拦截器的理论基础,并演示如何为CXF的客户端和服务端添加...

    13.为CXF与Spring整合发布WebService添加拦截器进行权限控制

    首先,我们需要创建一个实现了`org.apache.cxf.interceptor.Fault`和`org.apache.cxf.phase.PhaseInterceptor`接口的类。这个类通常会包含处理权限检查的业务逻辑。例如,你可以定义一个名为`...

    Cxf转换器示例

    【Cxf转换器示例】是一个关于Web服务技术的实践项目,主要聚焦于Apache CXF框架中的转换器(Converter)功能。Apache CXF是一个开源的Java框架,它用于构建和开发服务导向架构(SOA)和RESTful应用程序。CXF不仅支持...

    CXF-拦截器-权限控制-登录校验

    在IT行业中,尤其是在Web服务开发领域,Apache CXF是一个广泛使用的开源框架,它允许开发者创建和消费各种Web服务。CXF提供了丰富的功能,包括服务端和客户端的拦截器(Interceptor)机制,使得开发者能对服务调用...

    CXF 添加soap 头部信息.zip_CXF增加soap头验证_bluex8z_cxf_meltedkw7_soap信息头

    创建一个实现了`org.apache.cxf.interceptor.Fault`和`org.apache.cxf.phase.Phase`接口的类,如`SoapHeaderInterceptor`,并在`handleMessage`方法中处理头部信息: ```java public class SoapHeaderInterceptor...

    Maven版,Spring mvc, CXF WebService, WebService/Controller Interceptor, Sitemesh

    Interceptor(拦截器)是Spring MVC和CXF中的一个重要概念,它们允许我们在方法调用前后插入自定义逻辑,例如日志记录、权限检查或事务管理。在WebServices/Controller Interceptor中,拦截器可以用于在处理请求前...

Global site tag (gtag.js) - Google Analytics