WebService-CXF简介
百度百科 什么是CXF
Apache CXF = Celtix + Xfire
支持多种协议:
?SOAP1.1,1,2
?XML/HTTP
?CORBA(Common Object Request Broker Architecture公共对象请求代理体系结构,早期语言使用的WS。C,c++,C#)
?并可以与Spring进行快速无缝的整合
?灵活的部署:可以运行在Tomcat,Jboss,Jetty(内置),IBMWS,BeaWL上面。
1、jax-ws是Sun公司发布的一套开发WebService服务的标准。早期的标准如jax-rpc已经很少使用(在目前的jdk当中也没有附带这个工具,axis就是使用的这个标准。)。而cxf就是在新标准jax-ws下开发出来的WebService,jax-ws也内置到了jdk1.6当中。(对于2006年以前的jax-rpc(remoteprocess call)就不要再去研究了)。
2、关于更多Jax-ws规范的说明请见官方发布的文档:本目录下的jax-ws.pdf。
3、关于与Spring的整合,将后后面的章节讲解。最终将我们的服部署到Tomcat服务器上。
4、在CXF之前的许多WebService框架如:axis,xFire有兴趣的同学可以自己去了解一下。 1、需要说明的是:我下载的是最新版本的cxf框架,它基于jdk1.7创建,目前我们机上安装的都是jdk1.6. 等一会儿对于使用cxf2.4生成的客户端代码要进行适当的调整 Bus Bus是CXF框架的支撑.CXF Bus由spring配置文件构成(cxf.xml),在servlet初始化时 通过SpringBusFactory加载,它为所有终端定义了公共的上下文.它织入了所有运行 时的结构组件并提供了一个公共的应用上下文.SpringBusFactory扫描并加载类路径 下的META-INF/cxf目录并从以下文件构建上下文. META-INF/cxf/cxf.xml META-INF/cxf/cxf-extension.xml META-INF/cxf/cxf-property-editors.xml XML文件是安装CXF类库的一部分.CXF内部使用Spring配置.cxf.xml文件中bus定义如 下: <bean id="cxf" class="org.apache.cxf.bus.CXFBusImpl" /> 核心bus组件是CXFBusImpl,该类更多扮演拦截器供应商的角色对于终端出入的请求. 这些拦截器一旦应用,即可用于上下文中所有的终端.cxf.xml文件也定义了其他的组 件,比如BindingFactoryManager,ConduitFactoryManager等等.这些组件可用于bus 的扩展.可以使用getExtension()方法这些组件.注册这些组件以用于获取或更新服 务终端级别参数如服务绑定,传输协议,中转等等. -------------- Frontend-前端: Frontend CXF提供了前端建模的概念,可以使用不同的前端API创建ws.这些API使用简单工厂 bean和JAX-WS实现创建ws.可以创建动态ws客户端.CXF支持的前端主要是JAX-WS.
--------- Messageandintercetpors: 消息和拦截器 CXF框架中重要的组件之一是拦截器组件.拦截器拦截客户端和服务器间的消息.在 CXF,这通过拦截器链的概念实现.拦截器链是CXF运行时的核心功能.链中的每个拦截 器是可配的,用户可以控制他的执行. 框架的核心的是拦截器接口,它定义了两个方法handleMessage和handleFault,都携 带Message类型作为参数.
拦截器通常分组成各阶段.每个阶段执行特定的消息处理,每个阶段又被添加到拦截 器链中,因此,链有时有序的拦截器阶段的列表.典型的ws终端有三个连接器链: Inbound messages chain(入消息链) Outbound messages chain(出消息链) Error messages chain(错误消息链) 内置拦截器如日志,安全,也可以自定义拦截器. ----- Service Model-主要用于生成wsdl文件的各个元素。 建模service,创建各种WSDL元素如操作,绑定,终端,schema等等. 如下显示了服务模型中的各个组件: ------- Databinding 数据绑定是ws开发的关键.它意味着java对象和xml元素之间的映射.数据绑定组件执 行这一工作.CXF最新版本使用JAXB2.1.JAXB使用注解定义java对象和XML之间的映射.如下: @XmlRootElement(name="processOrder", ? ?????? namespace="http://localhost/orderprocess") @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name="processOrder",namespace="http://localhost/orderprocess") public class OrderProcess { ? @XmlElement(name="arg0",namespace="") ? privateorder.Order arg0; ? //Gettter and Setter ? … }
----------- 协议绑定:protocol bindings CXF支持以下形式的绑定: SOAP1.1 SOAP1.2 CORBA Pure XML
-- 数据传输——transport CXF支持以下数据传输方式: HTTP CORBA JMS LOCAL
安装CXF的其他支持项目:
lAnt
lTomcat
l并设置以下环境变量:
?JAVA_HOME?
?CXF_HOME
?ANT_HOME
?CATALINA_HOME
?Path =%JAVA_HOME%bin;%CXF_HOME%bin;%CATALINA_HOME%bin;%ANT_HOME%bin
?CLASSPATH=.;%CXF_HOME%libcxf-manifest.jar
;.buildclasses
1、为什么要用到ant这个工具呢?Ant做为一种工具已经广泛被使用,并且历史悠久。使用ant的内置命令,可以编译java源文件(javac),运行java文件(java),给class文件打包(jar、war、ear),也可以创建(mkdir)、删除(del)、拷贝(copy),甚至可以使用ant执行sql文件。由于ant是用xml语言写成的文件,并取默认名为build.xml文件。所以,今后大家应该在见到名为build.xml文件时知道这是一个ant的文件。 2、默认在Eclipse和MyEclipse的对ant有内建的支持。大家可以在MyEclipse中任意项目中建立一个文件叫build.xml文件,你会发现它有不同的图标(上面有个小蚂蚁)。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |