学习笔记
(仅供内部使用)
修订记录
日期 | 修订版本 | 修改章节 | 修改描述 | 作者 |
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小时内删除。
发表评论