作者:阿宝宝86 | 来源:互联网 | 2023-10-11 08:02
本文主要介绍关于xml,soap,cxf,webservice,soa的知识点,对【CXF学习(1)——CXF框架】和【cxf源码】有兴趣的朋友可以看下由【爱玩游戏的小隐】投稿的技术文章,希望该技术和
本文主要介绍关于xml,soap,cxf,webservice,soa的知识点,对【CXF学习(1)——CXF框架】和【cxf源码】有兴趣的朋友可以看下由【爱玩游戏的小隐】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的【WebService】相关技术问题。
cxf源码
文章目录 一、简介二、详解
一、简介
Apache CXF是开源的,CXF是两个项目的结合:由IONA技术公司(现在是Progress的一部分)开发的Celtix和由Codehaus主持的团队开发的XFire,合并是由人们在Apache软件基金会共同完成的。CXF的名字来源于"Celtix"和"XFire"的首字母。
CXF是一个开源Service框架,支持多种协议:SOAP、XML/HTTP、RestfulHTTP和CORBA,同时可以和Spring集成。
下面是CXF的结构,看一看出CXF由以下几种组件构成
bus 总线frontend 前端messaging and interceptors 消息传递和拦截器service model 服务模式data bindings 数据绑定protocol bindings 协议绑定transport 传输
二、详解
总线(BUS)
是CXF架构的主干,为共享资源提供了一个可配置的场所,作用非常类似于Spring的ApplicationContext。这些共享资源包括WSDL管理器、绑定工厂等。通过对Bus进行扩展,可以方便地容纳自己的资源,或替换现有的资源。默认Bus实现是基于Spring的,通过依赖注入,将运行时组件串起来。Bus的创建由BusFactory负责,默认是 SpringBusFactory,对应于默认Bus实现。
在构造过程中,SpringBusFactory会搜索META-INF/cxf(就包含在 CXF的Jar中)下的所有Bean配置文件,根据它们构建一个ApplicationContext。开发者也可提供自己的配置文件来定制Bus。
消息传递和拦截器(messaging and interceptors )
CXF建立于一个通用的消息层之上,主要由消息、拦截器和拦截器链(InterceptorChain)组成。CXF是以消息处理为中心的,熟悉 JSP/Servlet的开发者可以将拦截器视为CXF架构中的“Filter”,拦截器链也与“FilterChain”类似。通过拦截器,开发者可以方便地在消息传递、处理的整个过程中对CXF进行扩展。拦截器的方法主要有两个:handleMessage和handleFault,分别对应消息处理和错误处理。在开发拦截器的时候需要注意两点:
1)拦截器不是线程安全的,不建议在拦截器中定义实例变量并使用它。这一点跟JSP/Servlet中对于Filter的处理是一样的;
2)不要调用下一个拦截器的handleMessage或handleFault,这个工作由InterceptorChain来完成。
前端(Front End)
它为CXF提供了创建服务的编程模型,当前主要的前端就是JAX-WS。
服务模式(Service Model )
CXF中的服务通过服务模型来表示。它主要有两部分:ServiceInfo和服务本身。ServiceInfo作用类似WSDL,包含接口信息、绑定、端点(EndPoint)等信息;服务则包含了ServiceInfo、数据绑定、拦截器和服务属性等信息。可使用Java类和WSDL来创建服务。一般是由前端负责服务的创建,它通过ServiceFactory来完成。
前端(Front End)
绑定提供了在传输之上映射具体格式和协议的方法,主要的两个类是Binding和BindingFactory。BindingFactory负责创建Binding。
传输(Transport)
为了向绑定和前端屏蔽传输细节,CXF提供了自己的传输抽象。其中主要有两个对象:Conduit和Destination。前者是消息发送的基础,后者则对应消息接收。开发者还可以给Conduit和Destination注册MessageObserver,以便在消息发送和接收时获得通知。
流程图:
客户端:
服务器
本文《CXF学习(1)——CXF框架》版权归爱玩游戏的小隐所有,引用CXF学习(1)——CXF框架需遵循CC 4.0 BY-SA版权协议。