Apache CXF 基本概念

CXF 旨在为服务创建必要的基础设施,它的整体架构主要由以下几个部分组成:
1.Bus
它是C X F 架构的主干,为共享资源提供了一个可配置的场所,作用非常类似于S p r i n g
的ApplicationContext。这些共享资源包括WSDL 管理器、绑定工厂等。通过对Bus 进行扩
展,可以方便地容纳自己的资源,或替换现有的资源。默认Bus 实现是基于Spring 的,通
过依赖注入,将运行时组件串起来。Bus 的创建由BusFactory 负责,默认是SpringBusFactory,
对应于默认Bus实现。在构造过程中,SpringBusFactory会搜索META-INF/cx(f 就包含在CXF
的Jar 中)下的所有Bean 配置文件,根据它们构建一个ApplicationContext。开发者也可提
供自己的配置文件来定制Bus。
2.消息传递和拦截器(Interceptor)
CXF 建立于一个通用的消息层之上,主要由消息、拦截器和拦截器链(InterceptorChain)组
成。CXF 是以消息处理为中心的,熟悉JSP/Servlet 的开发者可以将拦截器视为CXF 架构中
的“Filter”,拦截器链也与“FilterChain”类似。通过拦截器,开发者可以方便地在消息传递、
处理的整个过程中对CXF 进行扩展。拦截器的方法主要有两个: handleMessage 和
handleFault,分别对应消息处理和错误处理。在开发拦截器的时候需要注意两点:
拦截器不是线程安全的,不建议在拦截器中定义实例变量并使用它。这一点跟JSP/Servlet
中对于Filter 的处理是一样的;
不要调用下一个拦截器的handleMessage 或handleFault,这个工作由InterceptorChain 来完成。
3.前端(Front End)
它为CXF 提供了创建服务的编程模型,当前主要的前端就是JAX-WS。
4.服务模型
CXF 中的服务通过服务模型来表示。它主要有两部分:ServiceInfo 和服务本身。ServiceInfo
作用类似WSDL,包含接口信息、绑定、端点(EndPoint)等信息;服务则包含了ServiceInfo、
数据绑定、拦截器和服务属性等信息。可使用Java 类和WSDL 来创建服务。一般是由前端
负责服务的创建,它通过ServiceFactory 来完成。
5.绑定(Binding)
绑定提供了在传输之上映射具体格式和协议的方法, 主要的两个类是Binding 和
BindingFactory。BindingFactory 负责创建Binding。
6.传输(Transport)
为了向绑定和前端屏蔽传输细节, CXF 提供了自己的传输抽象。其中主要有两个对象:
Conduit 和Destination。前者是消息发送的基础,后者则对应消息接收。开发者还可以给
Conduit 和Destination 注册MessageObserver,以便在消息发送和接收时获得通知。
开发方法
CXF 可以创建的Web 服务应用有两种:服务提供者和服务消费者。这种结构可类比客户端
/ 服务器结构,服务消费者类似于客户端,服务提供者类似于服务器。使用CXF 创建应用
时,服务提供者和服务消费者并不需要同时出现,因为有可能应用只是作为服务提供者或服
务消费者单独出现。

猜你喜欢

转载自chxiaowu.iteye.com/blog/1238749