下面给大家介绍一下Interceptor的一个使用实例,如果通过Interceptor来获取CXF的性能数据。
我们知道CXF通过Interceptor处理着各种不同不样的消息信息,如果我们能在这些消息中设置时间戳信息,那我们就可以很容易地获取到这些消息在 不同地阶段处理所耗费的时间信息,通过对这些时间戳信息的处理,我们可以很容易就获取到CXF运行时的性能数据了。
接下来我们看看CXF中管理模块是如何来实现设置时间戳信息的。
首先我们简单回顾一下CXF的消息处理流机制:
对于CXF来说消息就像是水流一样流过一个一个的过滤器(Interceptor)。消息可以按照流入流出的方向分为InMessage和OutMessage;在消息处理过程中可能会出现这样那样的错误,而这些错误信息根据其流入流出方向分为InFaultMessage和OutFaultMessage。这些进出的消息通过Exchange相互关联起来。 这样的设计给我带来一个很大的好处就是我们客户端还是在服务器端可以复用相同的Interceptor,这给设计和使用以及配置Interceptor带来了很大得方便。
如何从Interceptor中获取性能数据?
所有的Interceptor需要实现 public void handleMessage(Message message) throws Fault; 这一方法,而Message就是我们前面提到的大杂货铺。我们只需要找到消息处理的合适时机设置好对应的时间戳信息MessageHandlingTimeRecorder,并把时间戳信息寄存在Message中就完成了一大半的基础工作了。同时为了对把这些时间信息进行统计分析,这里我们设计了一个CounterRepository,Interceptor可以通过CounterRepository提供的记时方法increaseCounter(ObjectName on, MessageHandlingTimeRecorder mhtr)实现计数功能。
接下来的就是我们如何设计我们的Perfromance Interceptors了。这里需要大家能对消息的流入流出情况有一个比较清楚的认识,这里包括了消息一般都需要经过哪些阶段 Phase的处理。客户端和服务器端对于流入流出消息的都是如何进行处理的,还有就是对于Request/Response的消息与Oneway的消息其处理流程也不太相同。在这里我就不一一罗列了。有兴趣的朋友可以看看
代码。
分享到:
相关推荐
NULL 博文链接:https://reymont.iteye.com/blog/1532463
讲解了cxf实现拦截器的原因、核心API及使用方法
这里的Interceptor就和Filter、Struts的Interceptor很类似,提供它的主要作用就是为了很好的降低代码的耦合性,提供代码的内聚性。以HelloWorldService为例子。 参照网址:...
CXF 入门实例 CXF对Interceptor拦截器的支持 传递复杂类型对象 CXF整合Spring
一、CXF WebService准备工作 二、CXF 入门示例 三、CXF对Interceptor拦截器的支持 四、CXF WebService中传递复杂类型对象 五、CXF整合Spring
CXF对Interceptor拦截器的支持 CXF WebService中传递复杂类型对象 CXF整合Spring ANT工具快速构建、部署工程
通过CXF方式创建带用户认证的Webservice接口(含调用程序)与SSH框架完美整合。
ssh2-interceptor拦截器(权限管理).
我把lib包删除了.运行前,请先下载http://cxf.apache.org/download.html 最新的2.1.4版本的CXF.把所需的包拷到工程的lib包下面.启动tomcat,输入完整的路径.我在工程里配的路径是http://localhost:8080/cxf/ws.请注意...
Apache CXF 是一个Service框架,他简化了Service的创建, CXF实现了JAX-WS2.0规范,并通过了JAX-WS2.0 TCK; CXF和Spring无缝集成;CXF支持多种传输协议(HTTP...CXF基于Interceptor的架构,使得整个框架非常易于扩展。
WebService CXF 用了一天时间找,官网打不开,国内要积分,下下来又永不了。最后终于搞到手,上传上来分享给大家。 jdk版本 CXF版本 java 9及以上 3.3.x java 8 3.x java 7 2.2x --- 3.2之前版本 java 6 3.1 ...
一、CXF WebService准备工作 二、CXF 入门示例 三、CXF对Interceptor拦截器的支持 四、CXF WebService中传递复杂类型对象 五、CXF整合Spring
CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载
实战Web Service 之 CXF 实战Web Service 之 CXF
CXF源码:CXF_Spring源码 CXF源码:CXF_Spring源码
Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且...
WebService之CXF开发指南WebService之CXF开发指南WebService之CXF开发指南
Spring CXF Restful 实例
<import resource="classpath:META-INF/cxf/cxf.xml"/> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/> <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
说明: 1.本身是一个eclipse 的java project 2.需要JDK5,cxf 2.3.4 log4...关于cxf的深入研究,我发现国人翻译的东西很少,我想尽自己的微薄之力能给大家带些有用的东西,如果有什么关于cxf不明白之处,可以给我留言。