CXFgh.docx
- 文档编号:7087966
- 上传时间:2023-01-17
- 格式:DOCX
- 页数:25
- 大小:320.35KB
CXFgh.docx
《CXFgh.docx》由会员分享,可在线阅读,更多相关《CXFgh.docx(25页珍藏版)》请在冰豆网上搜索。
CXFgh
我的百科
我的贡献
草稿箱
CXF
ApacheCXF简介
关于ApacheCXF
ApacheCXF=Celtix+XFire,ApacheCXF的前身叫ApacheCeltiXfire,现在已经正式更名为ApacheCXF了,以下简称为CXF。
CXF继承了Celtix和XFire两大开源项目的精华,提供了对JAX-WS全面的支持,并且提供了多种Binding、DataBinding、Transport以及各种Format的支持,并且可以根据实际项目的需要,采用代码优先(CodeFirst)或者WSDL优先(WSDLFirst)来轻松地实现WebServices的发布和使用。
目前它仍只是Apache的一个孵化项目。
ApacheCXF是一个开源的Services框架,CXF帮助您利用Frontend编程API来构建和开发Services,像JAX-WS。
这些Services可以支持多种协议,比如:
SOAP、XML/HTTP、RESTfulHTTP或者CORBA,并且可以在多种传输协议上运行,比如:
HTTP、JMS或者JBI,CXF大大简化了Services的创建,同时它继承了XFire传统,一样可以天然地和Spring进行无缝集成。
功能特性
CXF包含了大量的功能特性,但是主要集中在以下几个方面:
支持WebServices标准:
CXF支持多种WebServices标准,包含SOAP、BasicProfile、WS-Addressing、WS-Policy、WS-ReliableMessaging和WS-Security。
Frontends:
CXF支持多种“Frontend”编程模型,CXF实现了JAX-WSAPI(遵循JAX-WS2.0TCK版本),它也包含一个“simplefrontend”允许客户端和EndPoint的创建,而不需要Annotation注解。
CXF既支持WSDL优先开发,也支持从Java的代码优先开发模式。
容易使用:
CXF设计得更加直观与容易使用。
有大量简单的API用来快速地构建代码优先的Services,各种Maven的插件也使集成更加容易,支持JAX-WSAPI,支持Spring2.0更加简化的XML配置方式,等等。
支持二进制和遗留协议:
CXF的设计是一种可插拨的架构,既可以支持XML,也可以支持非XML的类型绑定,比如:
JSON和CORBA。
项目目标
下面列出了来自ApacheCXF官方网站的项目目标。
概要
高性能可扩展简单且容易使用支持多种标准
支持JAX-WS、JAX-WSA、JSR-181和SAAJ;支持SOAP1.1、1.2、WS-IBasicProfile、WS-Security、WS-Addressing、WS-RM和WS-Policy;支持WSDL1.1、2.0;支持MTOM;
多种传输方式、Bindings、DataBindings和Format
Bindings:
SOAP、REST/HTTP;DataBndings:
目前支持JAXB2.0、Aegis两种,默认是JAXB2.0。
XMLBeans、Castor和JiBX数据绑定方式将在CXF2.1版本中得到支持;格式(Format):
XML、JSON;传输方式:
HTTP、Servlet、JMS和Jabber;可扩展的API允许为CXF增加其它的Bindings,以能够支持其它的消息格式,比如:
CSV和固定记录长度。
灵活部署
轻量级容器:
可在Tomcat或基于Spring的容器中部署Services;集成JBI:
可以在如ServiceMix,OpenESBorPetals等等的JBI容器中将它部署为一个服务引擎;集成SCA:
可以部署在如Tuscany之类的SCA容器中;集成J2EE:
可以在J2EE应用服务器中部署Services,比如:
Geronimo、JOnAS、JBoss、WebSphereApplicationServer和WebLogicApplicationServer,以及Jetty和Tomcat;独立的Java客户端/服务器。
支持多种编程语言
全面支持JAX-WS2.0客户端/服务器编程模型;支持JAX-WS2.0synchronous、asynchronous和one-wayAPI's;支持JAX-WS2.0DynamicInvocationInterface(DII)API;支持wrappedandnon-wrapped风格;支持XMLmessagingAPI;支持JavaScript和ECMAScript4XML(E4X),客户端与服务端均支持;通过Yoko支持CORBA;通过Tuscany支持SCA;通过ServiceMix支持JBI;
代码生成
JavatoWSDL;WSDLtoJava;XSDtoWSDL;WSDLtoXML;WSDLtoSOAP;WSDLtoService;
CXF框架支撑环境
CXF框架是一种基于Servlet技术的SOA应用开发框架,要正常运行基于CXF应用框架开发的企业应用,除了CXF框架本身之外,还需要JDK和Servlet容器的支持。
CXF是IONA的OpenSourceESBCeltix与号称最快的Soap协议栈XFire合并的apacheIncubate项目。
CXF是一个JAX-WSAPI的实现。
CXF支持多种binding,transport。
CXF支持也支持除JAX-WS之外的服务模型,例如JBI,CORBA,SCA等。
3、ApacheCXF是根据Spring哲学来进行编写的,即可以无缝地与Spring进行整合
1、ApacheCXF支持WS-Addressing、WS-Policy、WS-RM、WS-Security和WS-IBasicProfile
6、ApacheCXF目前仅支持JAXB和Aegis,并且默认是JAXB2.0,与XFire默认是支持Aegis不同,XMLBeans、JiBX和Castor将在CXF2.1版本中得到支持,目前版本是2.0.2
8、ApacheCXF提供方便的Spring整合方法,可以通过注解、Spring标签式配置来暴露WebServices和消费WebServices
ApacheCXF是一个开放原码服务框架。
CXF可以让你像JAX-WS使用前端编程的API一样帮助您建立和发展服务。
这些服务支持各种协议,如SOAP,XML/HTTP,RESTfulHTTP,或CORBA和用于传输信息的,如HTTP,JMS或JBI.
CXF2.1新特性:
1、支持JAX-WS2.1,部署JAX-WS已经更新至JAX-WS2.1规范;
2、JAX-RS0.6REST的初期部署基于服务框架;
3、Javascript客户端生成和支持,SOAP基于于端点的可以有Javascript带着JSURL自动创建;
4、CORBA的约束力来自Yoko,JAX-WS客户端/服务器能使IIOP与CORBA进程进行交互;
5、新的java2ws工具以更好的支持“java第一”的发展模式;
6、支持xmlbeans运行库,允许数据模型使用XmlBeans;
选择CXF的理由很多,但是主要集中在:
1.简单易用,支持众多编程模型;
2.与Spring集成;
3.提供了对RESTful服务的支持;
4.可插拔的框架设计对其他数据绑定和遗留系统提供了支持;
5.商业友好的Apache许可证。
目前,CXF尚处于Apache的孵化器中。
但由于其活跃度很高,且用户基础非常好(主要来自XFire和Spring),后势不可小视。
加之对JAXWS的支持,关注CXF的进展是非常有意义的。
功能和特点
CXF的当前版本是2.0.3,该版本的功能特性如下。
1.支持众多的标准,包括:
JAX-WS、JAX-WSA、JavaWeb服务
元数据规范(JSR-181)和SAAJ;
SOAP1.1、1.2、WS-IBasicProfile、WS-Security、WS-Addressing、WS-RM和WS-Policy;
WSDL1.1;
MTOM。
2.支持多种传输协议、绑定、数据绑定和格式
绑定:
SOAP、REST/HTTP;
数据绑定:
JAXB2.0、Aegis;
格式:
XML、JSON;
传输协议:
HTTP、Servlet、JMS和Local(即JVM内部消息通信机制);
可扩展的API允许开发者方便地对绑定和消息格式进行扩展。
3.灵活的部署
轻量级容器:
Tomcat或基于Spring的容器;
JEE集成:
可部署于JEE应用服务器中,如:
Geronimo、JOnAS、JBoss、WebLogic和WebSphere;
单独运行的客户机/服务器。
4.支持多种编程语言
完全支持JAX-WS2.0客户机/服务器编程模型;
JAX-WS2.0同步、异步和单程API;
JAX-WS2.0动态调用接口(DII)API;
支持包装和非包装风格;
XML消息传递API;
客户端和服务器编程都支持使用JavaScript和ECMAScript4XML(E4X);
通过Yoko提供对CORBA的支持。
基础架构
CXF旨在为服务创建必要的基础设施,它的整体架构主要由以下几个部分组成:
1.Bus
它是CXF架构的主干,为共享资源提供了一个可配置的场所,作用非常类似于Spring的ApplicationContext。
这些共享资源包括WSDL管理器、绑定工厂等。
通过对Bus进行扩展,可以方便地容纳自己的资源,或替换现有的资源。
默认Bus实现是基于Spring的,通过依赖注入,将运行时组件串起来。
Bus的创建由BusFactory负责,默认是SpringBusFactory,对应于默认Bus实现。
在构造过程中,SpringBusFactory会搜索META-INF/cxf(就包含在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.前端(FrontEnd)
它为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,以便在消息发送和接收时获得通知。
2.1版则引入一些新特性,包括:
1.支持JAX-WS2.1,包括JAXB2.1、API中的WS-A、SEI接口方法的JAXB标注、WebServiceFeature标注;
2.XmlBeans、JiBX数据绑定;
3.新的java2ws工具;
4.更好地支持REST(JSR-311);
5.支持js;
6.OSGibundling。
除了上述计划,有可能包含在2.1版,但是肯定会在2.2版的特性包括:
1.通过继承Yoko的代码来支持CORBA;
2.更好地集成Acegi;
3.WS-SecureConversation/Trust;
4.其他WS-*协议。
Apache最近宣布了ApacheCXF2.0的发布。
ApacheCXF提供了一套创建SOA服务的基础设施框架,用户由此可以按照自己喜欢的编程模式,利用ApacheCXF提供的简单易用工具(包括Maven插件),创建适合SOA环境的任何WEB服务,包括SOAP/HTTP服务及REST/HTTP服务。
ApacheCXF可扩展的插拔式架构不但支持XML消息格式和HTTP通信协议,而且还支持基于其他通信协议如IIOP和非XML消息格式如CORBACDL或JSON。
ApacheCXF项目是由ObjectwebCeltix和CodehausXFire在一年前合并成立的。
ObjectwebCeltix是由IONA公司赞助、于2005年成立的开源JavaESB产品,XFire则是业界知名的SOAP堆栈。
合并后的ApacheCXF融合该两个开源项目的功能精华,提供了实现SOA所需要的核心ESB功能框架,包括SOA服务创建,服务路由,及一系列企业级QoS功能。
此次发布代表了ApacheCXF开发人员及社区用户一年的努力结果,并标志ApacheCXF软件的进一步成熟,成为实现SOA的优秀技术解决方案之一。
ApacheCXF实现了JCP及Web服务的主要技术标准,大大方便了用户使用不同编程模式进行SOA服务开发,并为企业遗留系统的集成提供了可扩展性。
ApacheCXF支持的主要技术标准及功能包括:
多种技术标准。
ApacheCXF完全实现了多个JSR标准,包括JAX-WS2.0(JSR-224)、JavaWeb服务元数据(JSR-181)、和SAAJ(JSR-67)。
ApacheCXF2.0发布还通过了JAX-WS2.0TCK,成为开源社区继JAX-WSRI之后的第一个通过JAX-WSTCK的SOAP堆栈。
ApacheCXF还实现了多个Web服务标准,为用户实现企业级的Web服务提供了广泛的支持,这些Web服务标准包括SOAP1.1、SOAP1.2、MTOM/XOP、WSDL1.0、WS-Addressing、WS-ReliableMessaging、WS-Policy,WS-Security及WS-IBasicProfile等多种编程模式。
为方便用户按照自己喜欢的方式创建web服务,ApacheCXF提供了多种web服务开发模式。
除了完全支持JAX-WS各种编程模式如client/server、同步、异步、单程及动态调用接口,ApacheCXF还支持JavaScript及ECMAScript4XML(E4X)编程。
Spring用户可以很容易地按照Spring编程方式快速创建并部署web服务。
传统的Java开发人员则可以通过注释(Annotation)方便地进行web服务开发,喜欢POJOs的Java开发人员更可直接配置并部署基于POJOs的web服务。
更值得一提的是,通过ApacheYoko,用户不需要任何CORBA编程知识就可以轻松地把现有CORBA应用转化为web服务,或开发客户端与现有CORBA应用直接交互。
多种通信协议及消息格式。
ApacheCXF支持多种通信传输协议,包括HTTP/HTTPS、JMS、Servlet及同一JVM内通信,并提供了SOAP或纯XML通信消息格式(payload)支持。
同时,ApacheCXF具有创新意义的REST/HTTP支持也大大方便了用户创建真正符合REST风格的web服务。
对于那些需要重用IT遗留系统的用户来说,ApacheCXF可扩展的插拔式架构允许定制开发并混合使用任何类型的通信协议及通信消息格式。
支持多种容器部署。
基于ApacheCXF的web服务可以单独运行,也可部署在多种容器里,包括轻量级容器如Tomcat及Spring,JEE容器如Geronimo,JBOSS,WebLogic等。
同时,ApacheCXFweb服务还可以服务引擎方式部署于JBI容器如ServiceMix或OpenESB。
SCA容器如ApacheTuscany的支持也在计划之中。
目前,与ApacheCXF类似的开源项目有ApacheAxis2,JBOSSESB和Sun的Metro项目。
据ApacheCXF社区宣称,ApacheCXF以其性能和插拔式架构的优势正与其他开源项目区别开来,引起许多SOA编程高级用户的注意。
CXFarchitecture
ThearchitectureofCXFisbuiltuponthefollowingcomponents:
•Bus
•Frontend
•MessagingandInterceptors
•ServiceModel
•Databindings
•Protocolbindings
•Transport
Thefollowingfigureshowstheoverallarchitecture:
Bus
BusisthebackboneoftheCXFarchitecture.TheCXFbusiscomprisedofaSpring-basedconfigurationfile,namely,cxf.xmlwhichisloadeduponservletinitializationthroughSpringBusFactory.Itdefinesacommoncontextforalltheendpoints.Itwiresalltheruntimeinfrastructurecomponentsandprovidesacommonapplicationcontext.TheSpringBusFactoryscansandloadstherelevantconfigurationfilesintheMETA-INF/cxfdirectoryplacedintheclasspathandaccordinglybuildstheapplicationcontext.Itbuildstheapplicationcontextfromthefollowingfiles:
•META-INF/cxf/cxf.xml
•META-INF/cxf/cxf-extension.xml
•META-INF/cxf/cxf-property-editors.xml
TheXMLfileispartoftheinstallationbundle'scoreCXFlibraryJAR.Now,weknowthatCXFinternallyusesSpringforitsconfiguration.ThefollowingXMLfragmentshowsthebusdefinitioninthecxf.xmlfile.
ThecorebuscomponentisCXFBusImpl.Theclassactsmoreasaninterceptorproviderforincomingandoutgoingrequeststoawebserviceendpoint.Theseinterceptors,oncedefined,areavailabletoalltheendpointsinthatcontext.Thecxf.xmlfilealsodefinesotherinfrastructurecomponentssuchasBindingFactoryManager,ConduitFactoryManager,andsoon.Thesecomponentsaremadeavailableasbusextensions.OnecanaccesstheseinfrastructureobjectsusingthegetExtensionmethod.Theseinfrastructurecomponentsareregisteredsoastogetandupdatevariousserviceendpointlevelparameterssuchasservicebinding,transportprotocol,conduits,andsoon.
CXFbusarchitecturecanbeoverridden,butonemustapplycautionwhenoverridingthedefaultbusbehavior.SincethebusisthecorecomponentthatloadstheCXFruntime,manysharedobjectsarealsoloadedaspartofthisruntime.Youwanttomakesurethattheseobjectsareloadedwhenoverridingtheexistingbusimpl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CXFgh