其他分享
首页 > 其他分享> > CXF日志拦截器

CXF日志拦截器

作者:互联网

日志拦截器

什么是拦截器?

当客户端向服务端发送请求,请求中的数据将被组装并传输到服务器。服务器获取该数据,解组,最后调用服务方法。当服务器发送响应给客户端时,将重复该过程。组装和解组是客户端和服务端提供的核心功能。CXF通过Interceptor来提供这些功能。
Interceptor通过监听传输过来的信息来提供核心功能。这些功能包括:组装、解组、操纵消息头、执行认证检查、验证消息数据等。CXF提供内置的Interceptor来实现这些功能。用户也可以自定义Interceptor。Interceptor以phases组织起来,以链的形式调用

Interceptor工作流程

当接收消息或发送消息时,框架会将xml或soap对象传给PhaseInterceptorChain。PhaseInterceptorChain是一个责任链,其中的每一个环节是一个interceptor。当整个PhaseInterceptorChain里的所有interceptor执行完之后,就完成了xml到对象或对象到xml的转变。CXF将chain分成了inbound和outbound两个,分别处理接受消息和发送消息。chain里的interceptor的顺序由phase来确定,每一个interecptor在初始化的时候,都会指定一个phase。而每一个phase有一个int型的顺序值,在初始化chain的时候,会按照每个interceptor的phase来确定前后顺序。

在这里插入图片描述

服务端设置拦截器要在服务端发布代码前设置

//输入拦截器(拦截请求)
factory.getInInterceptors().add(new LoggingInInterceptor());
//输出拦截器(拦截响应)
factory.getOutInterceptors().add(new LoggingOutInterceptor());

客户端拦截器写在调用方法之前

Client client = ClientProxy.getClient(代理类对象);
    //输入拦截器(拦截响应)
factory.getInInterceptors().add(new LoggingInInterceptor());
//输出拦截器(拦截q)
factory.getOutInterceptors().add(new LoggingOutInterceptor());

标签:拦截器,Interceptor,add,CXF,new,interceptor,日志
来源: https://blog.csdn.net/m0_50726623/article/details/122093132