WebServices是用标准的、规范的XML概念描述的。该接口隐藏了实现服务的细节,允许独立于实现服务基于的硬件或软件平台和编写服务所用的编程语言使用服务。该接口允许并支持基于Web Services的应用程序称为松散耦合、面向组件和跨越具体技术的实现。
Web Services是独立的、模块化的应用,能够通过互联网来描述、发布、定位以及调用。在Web Services中所有的应用实体都被抽象成服务,在Web Services的体系架构中包括三个角色:服务提供者(Service Provider)、服务请求者(Service Requestor)、服务注册器(Service Rgistry)。角色间主要有三个操作:发布(Publish)、查找(Find)、绑定(Bind)。
发布:服务提供者需要首先将服务进行一定描述并按照规范格式发布到注册服务器上,在发布操作中,服务提供者需要通过注册服务器的身份验证和安全通道,才能对服务描述信息进行发布、修改和删除。
查找:服务请求方根据注册服务器提供的规范接口发出查询请求,以获取绑定服务所需的相关信息,在查找过程中一般包含两种查找方式,一种是浏览模式,及服务请求方可以根据通过的分类标准来浏览或者通过一些关键字来搜索,并逐步查找的范围,直到找到满足需要的服务,查找结果是一系列服务的集合。另一种是直接获取模式,即通过唯一的关键字直接得到特定服务的描述信息,其查找结果是唯一的。
绑定:服务请求方通过分析从注册服务器中得到的服务绑定信息,包括服务的访问路径、服务调用的参数、返回结果、传输协议、安全要求等,对自己的系统进行相应的配置,进而远程调用服务提供者所提供的服务。
Apach CXF的核心架构:
Apache CXF 主要由下列组件构成:
总线(Bus)组件
前端编程模型(Frontend)组件
消息(Messaging)和拦截器(Interceptors)组件
服务模型(Service Model)组件
数据绑定(Data Bindings)组件
WSDL绑定(WSDL Bindings)组件
传输协议(Transport)组件
Apache CXF注释组件
Bus(总线)是CXF最基本的也是最重要的组件之一,Apache CXF对外提供的功能和资源都是直接或间接通过调用Bus(总线)来实现。Bus是Apache CXF资源的管理者,也是调度者。通过Bus的调度和关联,开发人员可以在Apache CXF运行环境中共享资源,这种共享资源包括:WSDL管理、数据绑定管理等。开发人员调用Apache CXF框架进行业务处理,最终都转化为对BUS的调用。
消息(Messaging )和拦截器(Interceptors)组件:Apache CXF框架是建立在通用信息层上的应用框架,其构成包括消息(Messaging)组件、拦截器(Interceptors)组件和相位(Phase)组件。拦截器组件包括拦截器和拦截器链。拦截器是基本的功能单位。Apache CXF通过划分处理和发送消息的方式来构建一个非常灵活的架构。它可以在处理过程中重新配置任何节点。在Apache CXF的Messaging组件中,主要涉及的接口有Messaging接口和Exchange接口。Message接口是Apache CXF传递信息的基础,所有的操作都是通过转化成一定的消息格式来进行传输的。交换器(Exchange)不仅进行消息的转换,还可以转化特定的属性。
Apache CXF框架实现拦截器的原理是采用动态代理方式。
前端编程模型组件介绍:前端编程模型是一种用于Apache CXF的服务器端进和客户端进行交互的模型。前端编程模型的设计规范主要遵循JAX-WS规范和JAX-RS规范。
Apache CXF支持四种前端应用模式,一种是JAX-WS前端模式,一种是JAX-RS前端模式,一种是JavaScript语言,还有一种是简化前端模式。
服务模型(Service Model)组件说明:主要用于内部对象的之间的相互处理,对于开发人员是不可见的。服务模型是Apache CXF中service的代表。它由两部分组成:第一部分是ServiceInfo,其中包含该服务的WSDL模型以及操作、绑定和端点;第二部分就是Service本身,它包含了ServiceInfo、数据绑定、服务拦截器、服务属性等。
数据绑定组件:数据绑定实现了XML和java之间的映射。数据绑定通过生成XML schema的方式把xml转换为数据或者数据转换为XML,并支持wsdl2java代码生成器。不是所有的数据绑定都支持解析、转换、生成等功能。但是数据绑定必须提供数据转换。
绑定组件:绑定在顶层传输协议上提供了具体格式和协议的映射。
传输协议组件:
Apache CXF框架包括其本身的传输抽象层以达到针对前端层和绑定层隐藏具体传输细节,具体实现包括http、https、jms、local servlet、http_jetty、http_osgi、https_jetty等内容。
CXF的注解: