学习笔记
(仅供内部使用)

修订记录
日期
修订版本
修改章节
修改描述
作者
2011-06-20
1.00
初稿完成
易华军

目  录
1    CXF简介    4
1.1    CXF概述    4
1.2    CXF支持    4
1.2.1    协议标准    4
1.2.2    传输方式    4
1.3    CXF特点    5
1.3.1    灵活部署    5
1.3.2    支持多种编程语言    5
1.3.3    代码生成    6
1.4    CXF环境要求    6
2    实践讲解    6
2.1    CXF 开发例子    6
2.1.1    步骤图    6
2.1.2    步骤详解    8
2.2    CXF与Spring集成例子    11
2.2.1    步骤图    11
2.2.2    步骤详解    13
3    附录    16
3.1    cxf如何生成客户端    16
3.2    cxf会用到的注解 (还未完善)    17

导语:该文档主要讲解CXF的实践例子,包括纯CXF和Spring集成的两个例子。理论方面的知识还有待各位的完善。
1 CXF简介
本章主要简介CXF的理论知识。
1.1 CXF概述
CXF Celtix + Xfire的结合体,Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache CXF 了。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用。Apache CXF已经是一个正式的Apache顶级项目。
1.2 CXF支持
1.2.1 协议标准
CXF支持多种协议标准:JAX-WS、 JAX-WSA、JSR-181 和 SAAJ;支持 SOAP 1.1、1.2、WS-I BasicProfile、WS-Security、WS-Addressing、WS-RM 和 WS-Policy;支持 WSDL 1.1 、2.0;支持 MTOM;
1.2.2 传输方式
CXF支持多种协议传输方式:
Bindings:SOAP、REST/HTTP;
Data Bndings:目前支持 JAXB 2.0、Aegis 两种,默认是 JAXB 2.0。XMLBeans、Castor 和 JiBX 数据绑定方式将在 CXF 2.1 版本中得到支持;
格式(Format):XML、JSON;
传输方式:下载apacheHTTP、Servlet、JMS 和 Jabber;
可扩展 API 允许为 CXF 增加其它的 Bindings,以能够支持其它的消息格式,比如:CSV 和固定记录长度。
1.3 CXF特点
1.3.1 灵活部署
轻量级容器:可在 Tomcat 或基于 Spring 的容器中部署 Services;集成 JBI:可以在如 Se
rviceMix, OpenESB or Petals 等等的 JBI 容器中将它部署为一个服务引擎;集成 SCA:可以部署在如 Tuscany 之类的 SCA 容器中;集成 J2EE:可以在 J2EE 应用服务器中部署 Services,比如:Geronimo、JOnAS、JBoss、WebSphere Application Server 和 WebLogic Application Server,以及 Jetty 和 Tomcat;独立的 Java 客户端/服务器。
1.3.2 支持多种编程语言
全面支持 JAX-WS 2.0 客户端/服务器编程模型;支持 JAX-WS 2.0 synchronous、asynchronous 和 one-way API's;支持 JAX-WS 2.0 Dynamic Invocation Interface (DII) API;支持 wrapped and non-wrapped 风格;支持 XML messaging API;支持 JavaScript 和 ECMAScript 4 XML (E4X) ,客户端与服务端均支持;通过 Yoko 支持 CORBA;通过 Tuscany 支持 SCA;通过 ServiceMix 支持 JBI ;
1.3.3 代码生成
Java to WSDL;WSDL to Java;XSD to WSDL;WSDL to XML;WSDL to SOAP;WSDL to Service;
1.4 CXF环境要求
CXF 框架是一种基于 Servlet 技术的 SOA 应用开发框架,要正常运行CXF,除了 CXF 框架本身之外,还需要 JDK 和 Servlet 容器的支持。
2 实践讲解
本章讲解使用CXF框架发布Web Services服务的两个例子。
2.1 CXF 开发例子
讲解使用CXF框架发布Web Services的例子。
2.1.1 步骤图

2.1.2 步骤详解
下载CXF最新发布包
下载地址
/download.html
创建一个Web工程
引入CXF jar包
把前面下载的CXF包解压,进入lib目录。把所有jar包拷贝到刚创建的Web工程的lib目录。
配置CXFServlet
打开l配置CXF的接入Servlet。
样例如下:
<servlet>
    <servlet-name>CXFServlet</servlet-name>        <servlet-class>f.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/cxftest/*</url-pattern>
    </servlet-mapping>
编写待发布的接口
下面编写一个简单的登录接口。
样例如下:
import javax.jws.WebService;
@WebService
public interface Login {
    String login(String name, String password);
}
编写接口的实现类
样例如下:
import javax.jws.WebService;
@WebService(endpointInterface = "f.Login", serviceName = "Login")
public class LoginImpl implements Login {
    public String login(String name, String password) {
        String result = "登录CXF 服务端成功!";
        if (!"cxf".equalsIgnoreCase(name) || !"cxf".equalsIgnoreCase(password)) {
            result = "用户名或密码不正确,请重新登录!";
        }
        return result;
    }
}
编写发布服务类
样例如下:
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import f.jaxws.JaxWsServerFactoryBean;
public class InitServlet extends HttpServlet {
    @Override
    public void init() throws ServletException {
        LoginImpl loginImpl = new LoginImpl();
        JaxWsServerFactoryBean jwpFactory = new JaxWsServerFactoryBean();
        jwpFactory.setAddress("/Login");
        jwpFactory.setServiceClass(LoginImpl.class);
        jwpFactory.setServiceBean(loginImpl);
        ate();
    }
}
配置启动发布服务类
前面我们把发布服务的类实现在一个Servlet里,所以把该类配置到l里这样启动工程时就会发布Web Services。
样例如下:
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import f.jaxws.JaxWsServerFactoryBean;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。