CXF是apache旗下的开源框架,由Celtix + XFire这两门经典的框架合成,是一套非常流行的webService框架。
它提供了JAX-WS的全面支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来
轻松地实现 WebServices的发布和使用,同时它能与spring进行完美结合。
CXF包含了大量的功能特性,但是主要集中在以下几个方面:
1、支持 Web Services 标准:CXF 支持多种WebServices 标准,包含SOAP、Basic Profile、WS-Addressing、WS-Policy、WS-ReliableMessaging 和 WS-Security。
2、Frontends:CXF支持多种“Frontend”编程模型,CXF实现了JAX-WS API,它也包含一个“simple frontend”允许客户端和EndPoint 的创建,而不需要Annotation注解。CXF既支持WSDL优先开发,也支持从 Java 的代码优先开发模式。
3、容易使用: CXF设计得更加直观与容易使用。有大量简单的 API 用来快速地构建代码优先的Services,各种Maven 的插件也使集成更加容易,支持JAX-WS API ,支持 Spring更加简化的XML配置方式,等等。
4、支持二进制和遗留协议:CXF的设计是一种可插拨的架构,既可以支持XML,也可以支持非 XML 的类型绑定,比如:JSON和CORBA。
在apache cxf官网提供了CXF较全面的帮助文档,请参考地址:http://cxf.apache.org/docs/index.html
或去官网下载cxf压缩文件:http://cxf.apache.org/download.html,解压后,把lib目录下的jar包引用到java项目中
它提供了JAX-WS的全面支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来
轻松地实现 WebServices的发布和使用,同时它能与spring进行完美结合。
CXF包含了大量的功能特性,但是主要集中在以下几个方面:
1、支持 Web Services 标准:CXF 支持多种WebServices 标准,包含SOAP、Basic Profile、WS-Addressing、WS-Policy、WS-ReliableMessaging 和 WS-Security。
2、Frontends:CXF支持多种“Frontend”编程模型,CXF实现了JAX-WS API,它也包含一个“simple frontend”允许客户端和EndPoint 的创建,而不需要Annotation注解。CXF既支持WSDL优先开发,也支持从 Java 的代码优先开发模式。
3、容易使用: CXF设计得更加直观与容易使用。有大量简单的 API 用来快速地构建代码优先的Services,各种Maven 的插件也使集成更加容易,支持JAX-WS API ,支持 Spring更加简化的XML配置方式,等等。
4、支持二进制和遗留协议:CXF的设计是一种可插拨的架构,既可以支持XML,也可以支持非 XML 的类型绑定,比如:JSON和CORBA。
在apache cxf官网提供了CXF较全面的帮助文档,请参考地址:http://cxf.apache.org/docs/index.html
本文作为笔记,将记录CXF最基本的用法,项目使用maven管理
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>${cxf.version}</version>
</dependency>
或去官网下载cxf压缩文件:http://cxf.apache.org/download.html,解压后,把lib目录下的jar包引用到java项目中
cxf创建webService与java原生创建类似
首先编写一个ws接口,然后编写接口的实现类,请参考上文。
最后发布webService,代码如下:
public static void main(String[] args) {
JaxWsServerFactoryBean fac = new JaxWsServerFactoryBean();
fac.setAddress("http://localhost:8889/ms");
fac.setServiceBean(new PersonService());
fac.setServiceClass(IPersonService.class);
fac.create();
}
在浏览器中访问:http://localhost:8889/ms?wsdl,如图