基于Apache CXF构建SOA应用

出版社:任钢 电子工业出版社 (2013-03出版)
出版日期:2013-3
ISBN:9787121194603
作者:任钢
页数:514页

章节摘录

版权页:   插图:   REST不是一种协议,而是一种体系结构风格,这是非常重要的区别。 相比较于基于SOAP和WSDL的Web Services,REST模式提供了更为简洁的实现方案。目前,越来越多的Web Services开始采用REST风格设计和实现,真实世界中比较著名的REST服务包括:Google Ajax搜索API、Amazon Simple Storage Service(Amazon s3)等。 基于REST的Web Services遵循以下一些基本的设计原则。 系统中的每一个对象或资源都可以通过一个唯一的URI来进行寻址,URI的结构应该简单、可预测且易于理解,比如定义目录结构式的URI。 以遵循REC—2616所定义协议的方式显式地使用HTTP方法,建立创建、检索、更新和删除(CRUD:Create,Retrieve,Update and Delete)操作与HTTP方法之间的一对一映射: 若要在服务器上创建资源,应该使用POST方法; 若要检索某个资源,应该使用GET方法; 若要更改资源状态或对其进行更新,应该使用PUT方法; 若要删除某个资源,应该使用DELETE方法。 URI所访问的每个资源都可以使用不同的形式加以表示(比如XML或者JSON),具体的表现形式取决于访问资源的客户端,客户端与服务提供者使用一种内容协商的机制(请求头与MIME类型)来选择合适的数据格式,最小化彼此之间的数据耦合。 11.1.2 RESTful原则 在Web应用程序中最重要的REST原则是,客户端和服务器之问的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的全部信息。如果服务器在请求之间的任何时间点重启,客户端就不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。 在服务器端,应用程序状态和功能可以分为各种资源。资源是一个向客户端公开的概念实体。资源包含多种概念,如应用程序对象、数据库记录、算法,等等。每个资源都使用URI(UniversalResource Identifier)得到一个且唯一的地址。所有资源都共享统一的界面,以便在客户端和服务器之间传输状态。访问资源使用标准的HTTP方法,比如GET、PUT、POST和DELETE。Hypermedia是应用程序状态的引擎,资源表示通过超链接互联。

内容概要

前言
软件架构的实现模式是一个发展的过程。从以前的面向过程、面向对象,到后来的面向构件、面向整合和面向集成,接着又进化到现在的面向服务模式。这时候,一个非常时髦的词——SOA就出现在我们的面前。
SOA是一个沉重的话题。我很早就接触了这个概念。那时既年轻也轻狂,觉得SOA无非就是那么几个已经耳熟能详的单词组合。SOA的确出现得很早,但具体落地非常艰难。仅有一些空洞的解决方案和让人发炫的理想场景。在这样高不可及的光芒下,我们只是空喊一些口号,创造着各种新鲜、时髦和美好的词汇与概念,可没有一个明确可以下手的地方。如何让SOA进入百姓家,这似乎成为了一个不可能完成的任务。
Web Services的出现,似乎给了我们黑的眼睛,让我们有了寻找光明的希望。同时,Java平台对Web Services的支持,也给了我们实现SOA的利器。
基于Java规范的开源Web Services框架,我最早接触的是Apache Axis,当时还编写了基于Axis框架的一个扩展框架。后来与一些公司的开发团队接触,才知道Apache还有一个开源Web Services框架,即Apache CXF。这是一个合并过来的产品。这样,国内开发人员又多了一个开源Web Services框架选择,而且这个开源框架整合了ESB和Web Services,所以我对Apache CXF未来在中国的发展前景还是充满着信心的。对于Java支持SOA,也有很长的时间了,但国内关于SOA的方案都是一些大企业的平台,有点阳春白雪的感觉。对于一些小企业,采用一种重量级的工具似乎有一些不堪重负或者得不偿失。而Apache CXF框架则是一个轻量级的开源Web Services框架,在这个框架上完全可以构筑一个企业级的SOA平台。正是在这个理念的基础上,我认真地学习了Apache CXF框架,并把在这个学习过程中的体会、经验和一些应用例子贡献给读者。
在本书的编写中,主要参考了Apache CXF官方网站的信息。毕竟这是关于Apache CXF最权威的官方信息来源。在参考材料中,我比较喜欢IBM的相关网站,IBM的技术网站一般都站在比较前沿的领域来讲解、讨论和分析问题,所以,书中有一些内容也是摘取或参考了IBM技术网站的思想和内容。
本书覆盖的内容较多,可以毫不夸张地说,书中的很多章节都可以独立地撰写出一本很厚的书籍。正是出于这样的考虑,笔者不能对一些技术做详细描述,有的内容也只是蜻蜓点水地简单说明一下。本书最大的特点是实用性。对于SOA和Web Services的概念,以及其中的方方面面的内容,都有很多相关的书籍来进行阐述。作为本书的基本概念,我也介绍了一些关于这方面的内容。对于每一个例子,都进行了不止一次的编写、调试和测试。我可以负责任地说每一个例子都是可以运行的。对于我每一个涉及的主题,最终都是通过一个实际的案例(包括源程序代码)进行阐述的。这本书不是一本介绍理论的书,而是充满了各种程序代码实现方式的工具书籍。
当然,阅读本书也要具备一定的基础知识,否则,有些术语和解释还是比较难以理解的。
本书从第一次编写到最后实现出版总共花费了两年半的时间。在这个过程中我耗费了大量的时间和精力。并且这些工作都是在业余时间内完成,白天还要照常上班,只有到了晚上或者节假日才有闲暇时光。我一般难得有闲暇时间,如果有,也是打算去休息或放松,毕竟平时的工作还是比较劳累的。但我还是硬着皮头坐下来写书,写书是一件非常枯燥的任务。对于枯燥,这还不是最大的障碍。我认为最困难的是一个接着一个的技术难题。很多时候有些难题没有办法一下子解决,于是就做了一个例子又一个例子,编写了一个测试接着又一个测试,可还是不能达到自己理想的结果,沮丧、失败、自责、怀疑、困惑等等都涌上头来。在这段时间中我有几次都考虑放弃,心里总是在继续写和终止写之间徘徊不定。但总是觉得已经走了这么长的路程,不能因为一时的挫折而终止多年的辛劳,于是还是像一个孤独的苦行僧执着地编写和测试下去。很高兴的是我还是坚持下来了,在经历了无数个寂寞和孤单的夜晚,把这本书赶写出来。
在这期间,我要感谢我的家人对我的理解和支持。我的妻子和女儿总是抱怨我一天到晚总是待在电脑旁边。我要感谢我的父亲和母亲,我远离家乡,没有时间照顾他们,但他们总是支持我现在做的一切。在这期间,我的母亲永远地离开了我,我只能用这本书来纪念她。我要感谢我的好朋友江愿兵、徐宾和卢建平,他们在很多方面给了我无尽和无私的支持与鼓励。我把这里的一切都献给他们并祝愿他们好人一生平安。
由于笔者水平有限,书中覆盖的范围又比较广,涉及的概念也比较多,所以书中的错误和缺点在所难免,希望读者能给予批评和指正。我的联系方式是:rengang66@sina.com。

书籍目录

第1章 Apache CXF概述
1
1.1 Apache CXF框架简介
1
1.2 Apache CXF的基本特征
2
1.3 Apache CXF的功能特性
2
1.3.1 支持众多标准
2
1.3.2 支持多种传输协议和协议绑定、数据绑定和数据格式
3
1.3.3 灵活部署
3
1.3.4 支持多种语言编程
3
1.3.5 支持的工具
3
1.4 Apache CXF的历史
4
第2章 相关基础知识
5
2.1 SOA基础知识
5
2.1.1 SOA的定义、基本特征和优点
5
2.1.2 SOA参考架构
7
2.1.3 SOA相关技术标准
9
2.1.4 SOA的设计原则
11
2.1.5 SOA与Web Services的关系
12
2.2 Web Services的相关规范
13
2.2.1 Web Services简介
13
2.2.2 Web Services架构及其WS规范简介
16
2.2.3 基本Web Services规范——WSDL、SOAP、UDDI
18
2.2.4 扩展的WS规范——WS-*规范
26
2.3 Java中关于SOA的相关规范
30
2.3.1 JAX-RPC规范
31
2.3.2 JAX-WS规范
33
2.3.3 JAX-RS规范
34
2.3.4 JAXB规范
36
第3章 Apache CXF开发环境介绍
38
3.1 Apache CXF安装包的下载和说明
38
3.2 Apache CXF 框架支撑和运行环境
41
3.3 搭建Apache CXF开发环境
42
3.3.1 用Ant来创建项目
42
3.3.2 用Maven来创建项目
44
3.3.3 用Eclipse集成Apache CXF
49
第4章 简单的Apache CXF例子
50
4.1 一个简单的JAX-WS服务程序
50
4.2 利用Spring创建Web Services服务程序
55
4.3 Servlet容器中的Web Services实现
61
第5章 Apache CXF的架构体系和基础
65
5.1 Apache CXF的核心架构
65
5.2 Bus介绍
67
5.3 消息(Messaging)和拦截器(Interceptors)组件介绍
70
5.4 前端编程模型(Frontend)组件介绍
73
5.5 服务模型(Service Model)组件说明
75
5.6 数据绑定(Data Bindings)组件
76
5.7 绑定(Bindings)组件
76
5.8 传输协议(Transport)组件
78
5.9 CXF的注释
78
5.10 案例场景说明
82
第6章 CXF的前端应用
84
6.1 CXF的前端应用(Frontends)简介
84
6.2 基于代码优先(Java First)的JAX-WS前端模式实现
85
6.2.1 基于代码优先(Java First)的Web Services的步骤
85
6.2.2 基于代码优先(Java First)的Web Services的例子
95
6.3 基于WSDL优先(WSDL First)的JAX-WS前端模式实现
125
6.3.1 基于WSDL优先的JAX-WS前端模式实现的步骤
125
6.3.2 基于WSDL优先的JAX-WS前端模式实现的简单例子
130
6.3.3 基于WSDL优先的JAX-WS前端模式实现的复杂例子
145
6.4 简化前端模式(Simple Frontend)
145
6.4.1 简化前端模式(Simple Frontend)介绍
145
6.4.2 采用Apache CXF简化前端实现的例子
145
6.4.3 采用Apache CXF简化前端实现的Servlet例子
151
6.5 Provider/Dispatch服务前端应用模式
154
6.5.1 Provider/Dispatch服务前端应用模式介绍
154
6.5.2 采用DOMSource(message)的Provider/Dispatch前端模式实现例子
162
6.5.3 采用DOMSource(Payload)的Provider/Dispatch前端模式实现例子
168
6.5.4 采用SOAPMessage的Provider/Dispatch前端模式实现例子
170
6.6 采用Apache CXF的动态客户端技术
175
6.6.1 Apache CXF的动态客户端技术介绍
175
6.6.2 Apache CXF的动态客户端技术例子
178
6.6.3 Apache CXF的动态客户端实现的Servlet例子
189
第7章 CXF的数据绑定
194
7.1 数据绑定(DataBindings)介绍
194
7.2 JAXB数据绑定
196
7.2.1 JAXB介绍
196
7.2.2 Apache CXF实现JAXB的方式
198
7.2.3 Apache CXF实现JAXB数据绑定例子
199
7.3 Aegis数据绑定
200
7.3.1 Aegis介绍
200
7.3.2 采用简化前端、Aegis数据绑定的例子实现
209
7.3.3 采用简化前端Aegis数据绑定的Servlet例子实现
213
7.4 MTOM使用
217
7.4.1 MTOM简介
217
7.4.2 CXF实现MTOM的方式
218
7.4.3 CXF实现MTOM的例子
221
7.4.4 CXF实现MTOM的Servlet例子
229
7.5 XMLBeans的使用
233
7.5.1 XMLBeans简介
233
7.5.2 CXF实现XMLBeans的方式
234
7.5.3 实现简化前端XMLBeans数据绑定的例子
235
7.5.4 采用简化前端XMLBeans数据绑定的Servlet例子实现
239
第8章 CXF的传输
243
8.1 CXF支持的传输协议
243
8.2 HTTP传输协议
243
8.2.1 CXF支持HTTP传输协议介绍
244
8.2.3 Spring注入HTTP传输并基于Servlet的实现
247
8.3 JMS传输协议
250
8.3.1 JMS简介
250
8.3.2 在Apache CXF中使用JMS
252
8.3.3 Spring注入实现JMS的例子程序
258
8.3.4 Spring注入实现JMS的Servlet例子程序
264
8.4 Local传输协议
269
8.4.1 Apache CXF的Local传输协议介绍
269
8.4.2 CXF的Local配置和使用
269
8.4.3 实现简化前端Local传输的例子
271
8.4.4 实现JAX-WS规范并采用Local传输的例子
275
8.4.5 Spring注入实现JAX-WS规范并采用Local传输的例子
280
第9章 CXF的配置、调试和日志
285
9.1 CXF的配置
285
9.1.1 CXF配置概述
285
9.1.2 Bus配置
288
9.1.3 Features列表
290
9.1.4 JMX管理
290
9.2 CXF的日志管理
292
9.2.1 CXF日志的设置
292
9.2.2 定义日志级别
294
9.2.3 使用Log4J日志方式
294
9.2.4 使用SLF4J日志方式
294
9.3 Apache CXF的调试管理
295
9.3.1 Eclipse IDE
295
9.3.2 Tcpmon
295
9.3.3 WSMonitor
295
9.3.4 SOAP UI
295
9.3.5 Wireshark
295
第10章 CXF的工具
296
10.1 Ant工具(2.0.x和2.1.x)
296
10.2 在Eclipse的CXF工具
297
10.3 Java代码生成Web Services
297
10.4 Java代码生成WSDL
299
10.5 WSDL生成Java代码
300
10.6 WSDL转化为Javascript
302
10.7 WSDL生成服务(Service)
303
10.8 WSDL生成SOAP
305
10.9 WSDL生成XML
306
10.10 WSDL验证器
307
10.11 XSD生成WSDL
307
第11章 CXF实现RESTful服务
309
11.1 RESTful服务介绍
309
11.1.1 RESTful服务概述
309
11.1.2 RESTful原则
310
11.1.3 创建基于REST的 Web Services
314
11.2 Apache CXF的RESTful实现方式
315
11.2.1 JAX-RS实现方式
315
11.2.2 基本特征
316
11.2.3 支持的特征
317
11.2.4 其他先进功能
320
11.3 JAX-WS Provider和Dispatch实现方式
321
11.4 HTTP绑定方式
323
11.5 CXF实现RESTful 服务的例子说明
326
11.5.1 CXF采用HttpClient实现基本的RESTful应用
326
11.5.2 CXF采用HttpClient在Servlet实现基本的RESTful应用
336
11.5.3 CXF采用WebClient实现RESTful应用
340
11.5.4 CXF采用WebClient在Servlet实现基本的RESTful应用
348
11.5.5 JAX-WS Provider和Dispatch实现RESTful方式
352
11.5.6 Http_Binding实现基于XML的RESTful方式
359
11.5.7 Http_Binding在Servlet实现基于XML的RESTful方式
365
11.5.8 Http_Binding实现基于JSON的RESTful方式
369
11.5.9 Http_Binding在Servlet实现基于JSON的RESTful方式
374
第12章 CXF对动态语言的支持
379
12.1 CXF对JavaScript等语言的支持
379
12.1.1 用JavaScript来实现Web Services
379
12.1.2 用E4X(ECMAScript for XML)来实现Web Services
380
12.1.3 部署Script服务
381
12.2 CXF基于JavaScript等语言实现Web Services的例子
382
12.2.1 用JavaScript调用CXF的Web Services
382
第13章 CXF对WS-* 的支持
391
13.1 Apache CXF支持WS-Addressing
391
13.1.1 WS-Addressing简介
391
13.1.2 Apache CXF的WS-Addressing配置
393
13.1.3 Apache CXF的WS-Addressing的实现例子
396
13.2 Apache CXF支持WS-Policy
405
13.2.1 WS-Policy简介
405
13.2.2 Apache CXF使用WS-Policy框架
406
13.2.3 Apache CXF的WS-Policy的实现例子
407
13.3 Apache CXF支持WS-ReliableMessaging
412
13.3.1 WS-ReliableMessaging简介
413
13.3.2 Apache CXF使用WS-ReliableMessaging的配置
414
13.3.3 Apache CXF的WS-ReliableMessaging的实现例子
417
13.4 Apache CXF支持WS-Security
429
13.4.1 WS-Security介绍
429
13.4.2 Apache CXF使用WS-Security的配置
431
13.4.3 Apache CXF的WS-Security的实现例子
437
13.5 Apache CXF支持WS-SecurityPolicy
450
13.5.1 WS-SecurityPolicy简介
450
13.5.2 Apache CXF使用WS-SecurityPolicy的配置
451
13.5.3 Apache CXF的WS-SecurityPolicy的实现例子
453
13.6 Apache CXF支持WS-Trust
465
13.6.1 WS-Trust简介
466
13.6.2 Apache CXF使用WS-Trust的配置
467
13.7 Apache CXF支持WS-SecureConversation
470
13.7.1 WS-SecureConversation介绍
470
13.7.2 Apache CXF使用WS-SecureConversation的配置
471
第14章 CXF的高级功能
472
14.1 CXF的Feature功能
472
14.1.1 CXF的Feature功能说明
472
14.1.2 编写和配置CXF的Feature
473
14.1.3 CXF的Feature列表
475
14.1.4 CXF实现Feature的例子
476
14.2 CXF的拦截器(Interceptors)和相位器(Phases)
480
14.2.1 CXF的拦截器(Interceptors)和相位器(Phases)介绍和使用
480
14.2.2 CXF的拦截器(Interceptors)的例子
488
14.3 CXF的代理(invoker)
495
14.3.1 CXF的代理(invoker)功能说明
495
14.3.2 CXF的代理(invoker)的实现例子
496
14.4 CXF的MER(Multiplexed EndpointReferences)
503
14.5 CXF的基础服务
505
14.6 CXF的服务路由(Service Routing)
506
第15章 CXF的部署和发布
510
15.1 应用服务器的具体配置指南
510
15.1.1 Tomcat
510
15.1.2 JBoss
510
15.1.3 WebLogic
511
15.1.4 WebSphere
512
15.1.5 OC4J
512
15.2 在Spring内嵌入CXF
512
参考文献
514

编辑推荐

《基于Apache CXF构建SOA应用》适用于软件设计师、软件开发工程师和一些正在进行SOA开发的开发人员,既可以作为ApacheCXF框架的学习指南,也可以提供给软件开发工程师在设计方面进行参考。

作者简介

《基于Apache CXF构建SOA应用》共15章,大致分为三个部分。第一部分介绍关于SOA和WebServices的初步知识,第二部分介绍ApacheCXF框架的一些基础知识,第三部分重点介绍ApacheCXF框架的应用,包括ApacheCXF框架的前端(Frontends)应用、数据绑定(DataBindings)应用、传输协议(Transports)应用,并隆重推出了ApacheCXF框架如何实现RESTful服务、如何支持动态语言和WS—*规范等,另外,还包括ApacheCXF框架一些高级功能的用法。最后,《基于Apache CXF构建SOA应用》还描述了ApacheCXF的工具、配置、调试、日志、部署和发布等使用的相关内容。 
《基于Apache CXF构建SOA应用》最大的特点是实用性。对于SOA和WebServices的基本概念只是初步介绍,主要内容是基于ApacheCXF框架的WebServices应用案例。对于每一个ApacheCXF框架的功能主题,都通过一个或多个实际的案例场景来进行阐述。对于每一个案例场景,都有源代码程序例子、架构描绘和程序实现说明。笔者可以负责任地说每一个例子都经过调试并能够运行。实践也是编写《基于Apache CXF构建SOA应用》的一个重要目的,最终目的就是让读者全方位地了解ApacheCXF框架能实现的功能,一方面让读者理解开发者的思路,另一方面帮助读者在实际工作中应用这些方法和编程。


 基于Apache CXF构建SOA应用下载 更多精彩书评



发布书评

 
 


精彩书评 (总计1条)

  •     1. 书中的内容几乎都能在IBM developerworks等网站中直接找到,而且都是都是09年以前的技术点了;2. 相对RESTful来讲,SOA有点过时了;3. 书中搭建环境用的apache cxf的版本为2.2.3,太老了,最新的为2.7.*,而且是基于JDK5的平台,现在都是JDK7了,书中的案例几乎不能运行起来;4. 书中的内容几乎就是一个小案例,稍微改变了一点点的东西而反复呈现,书特别厚,但基本上都是大量重复无用的代码,很少有闪光点;5. 书中的关键技术点没有任何原理性的讲解,就只是套在代码中使用而不做解释;6. 书中的一些观点没有充分的说服力,只是一些很简单的陈述,很难引起读者的思考和共鸣;这本书在出版之前自己一直很期待,曾多次给出版社打电话询问,但看过之后,极度失望....

精彩短评 (总计4条)

  •     关注SOA的,可以比较学习。
  •     作为入门参考不错,很多实践例子,可以直接指导使用。这本书的定位大概是 tutorial 或者 cookbook没什么深入分析,帮助快速上手
  •     书 不错 建议大家购买 此书介绍的很不错。。
  •     1. 书中的内容几乎都能在IBM developerworks等网站中直接找到,而且都是都是09年以前的技术点了;2. 相对RESTful来讲,SOA有点过时了;3. 书中搭建环境用的apache cxf的版本为2.2.3,太老了,最新的为2.7.*,而且是基于JDK5的平台,现在都是JDK7了,书中的案例几乎不能运行起来;4. 书中的内容几乎就是一个小案例,稍微改变了一点点的东西而反复呈现,书特别厚,但基本上都是大量重复无用的代码,很少有闪光点;5. 书中的关键技术点没有任何原理性的讲解,就只是套在代码中使用而不做解释;6. 书中的一些观点没有充分的说服力,只是一些很简单的陈述,很难引起读者的思考和共鸣;这本书在出版之前自己一直很期待,曾多次给出版社打电话询问,但看过之后,极度失望....
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024