百度百科
什么是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%\lib\cxf-manifest.jar ;.\build\classes
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文件,你会发现它有不同的图标(上面有个小蚂蚁)。