【书名】: 10.5pt; color: black; font-family: \'Times New Roman\',\'serif\';">Java高手真经. 系统架构卷 : Java Web系统设计与架构 : UML建模+设计模式+面向服务架构
【作者】刘中兵编著
【ISBN】 978-7-121-09728-7
【出版社】电子工业出版社
【出版日期】2009年12月
【定 价】69.00元(含光盘1张)
【本书特色】
国内首创Java开发者的技术体系 实力畅销作者刘中兵携手Java研究室继续执笔,完善的读者与作者的互动手段,本套图书将有独立的读者答疑平台。本套图书随书配送“Java开发技术体系”手册,本手册涵盖了Java开发者最关心的内容:Java与.NET的选择、Java技术体系的构成、Java技术路线图,并详细说明了本系列图书的内容体系。
【内容简介】
本书讲解JavaWeb系统设计与架构,包括Java与UML建模技术、Java设计模式、面向服务架构SOA、面向资源架构ROA、面向云架构COA,这5部分内容层层递进,涵盖了Java EE开发中的各种设计与架构技术。讲解的主要内容包括如下。
Java与UML建模:讲解UML建模的5类10种图,包括用例图、静态图(类图、对象图、包图)、实现图(组件图、部署图)、行为图(状态图、活动图)、交互图(序列图、协作图),并结合Bug管理系统、ATM取款机等实例进行讲解。
Java设计模式:包括5种创建型模式(工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式)、7种结构型模式(适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式)、11种行为型模式(策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式),并通过Java中的经典案例进行展示。
面向服务架构SOA:讲解Web服务协议(SOAP、WSDL、UDDI)、Web服务开发技术(使用JAX-WS、Axis开发Web服务)、SOA架构技术(Sun公司的JBI和IBM/BEA公司的SCA/SDO、OSGi架构)、SOA延伸技术(BPEL业务流程管理、ESB企业服务总线与EAI企业应用集成)、SOA扩展应用(Portal门户组件与Portlet窗口组件)。
面向资源架构ROA:讲解REST产生的背景、概念、基本原理、设计方法,以及常用REST开源框架、ROA面向资源架构。
面向云架构COA:讲解云计算的几个发展阶段的概念,包括网格计算、集群计算、分布式计算和云计算,以及云服务的特点、实现形式和实际应用。随书附赠光盘内容为本书各种原型包、系统源程序。
本书适合作为Java相关培训机构的教材,也可作为Java自学人员的参考手册。
【前言】
本书培训目标
Java Web即Java EE,它是面向企业级的网络系统,其中的“企业级”和“网络”(分布式)代表了Java Web开发的核心目标。在Java EE最新的规范中提供了进行企业级开发的框架组件EJB,并同时提供了多种分布式服务开发技术方案,以及多种企业应用的业务解决方案。
本书将针对这5个层次的技术进行详细讲解:
如果说Java Web的各种技术与框架是构建一个大厦的砖与梁,那么进行Java Web系统的设计与架构,就是使用这些砖和梁来建造各种结构和风格的大厦,这就是软件架构设计的主旨。要进行Java Web系统的架构设计,首先需要从抽象的层次对Java语言进行各种基本功的训练。
(1)Java与UML建模:建模是进行软件架构设计的表示工具,共5类10种图,包括用例图、静态图(类图、对象图、包图)、实现图(组件图、部署图)、行为图(状态图、活动图)、交互图(序列图、协作图)。
(2)Java设计模式:设计模式是进行软件架构设计的代码模式,共包括3种类型21种模式。
创建型模式(5种):抽象工厂/建造者/工厂方法/原型/单例。
结构型模式(7种):适配器/桥接/组合/装饰/外观/享元/代理。
行为型模式(11种):责任链/命令/解释器/迭代子/中介者/备忘录/观察者/状态/策略/模板方法/访问者。
然后训练各种风格的架构形式,除了Java Web高级技术中讲解的分布式架构外,还有3种架构形式。
(3)面向服务架构SOA:以WebService为基础,基于SOAP协议实现与各种语言系统的分布式调用,讲解的技术包括:
Web服务协议(SOAP、WSDL、UDDI)。
Web服务开发技术(使用JAX-WS、Axis开发Web服务)。
SOA架构技术(Sun公司的JBI和IBM/BEA公司的SCA/SDO、OSGi架构)。
SOA延伸技术(BPEL业务流程管理、ESB企业服务总线与EAI企业应用集成)。
SOA扩展应用(Portal门户组件与Portlet窗口组件)。
(4)面向资源架构ROA:以资源的形式规划网络结构,将网络上的各种增、删、改、查的操作都定义为统一的URL资源,保持永久的唯一性,这就是Restful风格。
(5)面向云架构COA:以云的形式提供广阔的网络服务,让用户能够随时随地利用互联网做各种事情,讲解的技术包括网格计算、集群计算、分布式计算、云计算。
以上内容实际上也是进行分布式架构设计的完美诠释。
【目录】
绪论 软件设计与架构概述 1
一、Java与UML建模 1
二、Java设计模式 2
1.创建型模式
2.结构型模式
3.行为型模式
三、系统架构 4
1.面向服务架构SOA
2.面向资源架构ROA
3.面向云架构COA
第1部分 Java与UML建模
第1课 UML快速入门 9
1.1 UML建模概述 9
1.1.1 面向对象方法 10
1.1.2 面向对象建模OMT 10
1.1.3 统一建模语言UML 11
1.1.4 UML的起源和发展 11
1.1.5 为什么要使用UML 12
1.2 UML基本构成元素 13
1.2.1 4种事物 13
1.结构事物(Structural Things)
2.行为事物(Behavioral Things)
3.分组事物(Grouping Things)
4.注释事物(Annotational Things)
1.2.2 4种关系 16
1.依赖(Dependencies)
2.关联(Association)
3.泛化(Generalization)
4.实现(Realization)
1.2.3 10种图 17
1.用例图(Usecase Diagram)
2.类图(Class Diagram)
3.对象图(Object Diagram)
4.包图(Package Diagram)
5.组件图(Compoment Diagram)
6.部署图(Deployment Diagram)
7.状态图(Statechart Diagram)
8.活动图(Activity Diagram)
9.序列图(Sequence Diagram)
10.协作图(Collaboration Diagram)
1.2.4 UML图的分类 22
1.3 UML设计工具 24
1.3.1 使用Rose进行UML建模 24
1.3.2 使用Visio进行UML建模 25
1.4 本课小结 27
1.4.1 本课图例打包uml.mdl 27
1.4.2 总结本课的知识点 27
1.4.3 要掌握的关键点 28
1.4.4 课后上机作业 29
1.4.5 继续下一课:用例图 29
第2课 用例图 31
2.1 用例概述 31
2.1.1 什么是用例 31
2.1.2 为什么要使用用例 32
2.1.3 用例图的基本模型元素 32
2.2 用例图的绘制 33
2.2.1 参与者的表示法 33
2.2.2 用例的表示法 34
2.2.3 系统边界的表示法 35
2.2.4 通信关联的表示法 35
2.3 用例图的建立过程 36
2.3.1 发现参与者及检查标准 36
2.3.2 发现用例及检查标准 37
2.3.3 编写用例规约 37
2.3.4 用例图创建技巧 38
2.4 本课小结 39
2.4.1 本课图例打包usecase.mdl 39
2.4.2 总结本课的知识点 40
2.4.3 要掌握的关键点 40
2.4.4 课后上机演练—企业产品生产销售管理系统 41
2.4.5 继续下一课:静态图—类图、对象图、包图 42
第3课 静态图—类图、对象图、包图 43
3.1 类图的绘制 43
3.1.1 类图的表示法 43
1.类图的表示法
2.类图属性的表示法
3.类图操作的表示法
3.1.2 接口的表示法 46
3.1.3 类图之间的4种关系 46
1.泛化关系(Generalization)—表示类的继承
2.关联关系(Association)—表示类的变量
3.依赖关系(Dependency)—表示局部变量
4.实现关系(Realization)—表示接口的实现
3.2 对象图的绘制 50
3.2.1 对象图的表示法 50
3.2.2 对象图的使用场景—序列图和协作图 50
3.3 包图的绘制 52
3.3.1 包图的表示法 52
3.3.2 使用包包含类 52
3.3.3 使用包包含子包 53
3.3.4 包的依赖关系 53
3.4 本课小结 54
3.4.1 本课图例打包class.mdl 54
3.4.2 总结本课的知识点 57
3.4.3 课后上机演练—企业信息管理系统用户登录和注册模块 58
3.4.4 继续下一课:实现图—组件图与部署图 59
第4课 实现图—组件图与部署图 61
4.1 组件图的绘制 61
4.1.1 组件的表示法 61
4.1.2 程序的表示法 62
1.子程序规范
2.子程序体
3.主程序
4.1.3 包的表示法 62
1.包规范
2.包体
4.1.4 任务的表示法 63
1.任务规范
2.任务体
4.1.5 组件之间的依赖 63
4.2 部署图的绘制 64
4.2.1 处理器节点的表示法 64
4.2.2 设备节点的表示法 64
4.2.3 节点之间的关联 64
4.3 本课小结 65
4.3.1 本课图例打包component.mdl 65
4.3.2 总结本课的知识点 66
4.3.3 要掌握的关键点 67
4.3.4 课后上机演练—企业信息管理系统部署图 67
4.3.5 继续下一课:行为图—状态图 68
第5课 行为图—状态图 69
5.1 状态图的绘制 69
5.1.1 状态图的基本模型 69
5.1.2 状态的表示法 70
5.1.3 转换的表示法 71
5.2 状态的绘制 72
5.2.1 初始状态的表示法 72
5.2.2 终止状态的表示法 73
5.2.3 子状态的表示法 73
5.2.4 历史状态的表示法 73
5.3 本课小结 74
5.3.1 本课图例打包statechart.mdl 74
5.3.2 总结本课的知识点 75
5.3.3 要掌握的关键点 75
5.3.4 课后上机演练 75
1.Bug管理系统状态图
2.ATM机存取款状态图
3.Java线程类Thread的状态图
5.3.5 继续下一课:行为图—活动图 78
第6课 行为图—活动图 81
6.1 活动图的绘制 81
6.1.1 活动图的基本模型 81
6.1.2 活动的表示法 82
6.1.3 转换的表示法 83
6.1.4 分支与合并的表示法 84
6.1.5 分叉与汇合的表示法 84
6.1.6 泳道的表示法 85
6.2 本课小结 87
6.2.1 本课图例打包activity.mdl 87
6.2.2 总结本课的知识点 88
6.2.3 要掌握的关键点 88
6.2.4 课后上机演练 89
1.Bug管理系统活动图
2.ATM机存取款活动图
3.Java线程类Thread的活动图
6.2.5 继续下一课:交互图—序列图 91
第7课 交互图—序列图 93
7.1 序列图的绘制 93
7.1.1 序列图的基本模型 93
7.1.2 对象生命线的表示法 94
7.1.3 激活的表示法 95
7.1.4 消息的表示法 95
7.1.5 自调用消息的表示法 97
7.2 本课小结 97
7.2.1 本课图例打包sequence.mdl 97
7.2.2 总结本课的知识点 98
7.2.3 要掌握的关键点 98
7.2.4 课后上机演练 98
1.Bug管理系统序列图
2.ATM机存取款序列图
3.打电话序列图
7.2.5 继续下一课:交互图—协作图 102
第8课 交互图—协作图 103
8.1 协作图的绘制 103
8.1.1 协作图的基本模型 103
8.1.2 对象的表示法 104
8.1.3 连接的表示法 104
8.1.4 消息的表示法 104
8.1.5 自调用消息的表示法 105
8.2 本课小结 105
8.2.1 本课图例打包collaboration.mdl 105
8.2.2 总结本课的知识点 106
8.2.3 要掌握的关键点 106
8.2.4 课后上机演练 106
1.Bug管理系统协作图
2.ATM机存取款协作图
3.打电话协作图
8.2.5 继续下一课:使用UML进行系统设计—Bug管理系统 109
第9课 使用UML进行系统设计—Bug管理系统 111
9.1 UML系统设计概述 111
9.1.1 软件开发的驱动方法 112
1.数据库驱动开发DDD(Database-Driven Development)
2.测试驱动开发TDD(Test-Driven Development)
3.模型驱动开发MDD(Model-Driven Development)
9.1.2 正向工程与逆向工程 113
1.正向工程(Forward Engineering)
2.逆向工程(Reverse Engineering)
9.1.3 UML建模的受众分析 114
9.1.4 UML建模的过程 114
9.2 Bug管理系统的模型驱动开发过程 115
9.2.1 需求分析—用例图 116
9.2.2 系统分析:分析业务规则—状态图 117
9.2.3 系统分析:分析业务流程—活动图 117
9.2.4 系统设计:设计静态结构—类图和包图 118
9.2.5 系统设计:Action类被调用关系—序列图 120
9.2.6 系统设计:用户调用Action类的过程—协作图 121
9.2.7 系统架构—组件图和部署图 121
9.2.8 编码实现 123
9.2.9 UML图例打包bug.mdl 123
9.3 本课小结 123
9.3.1 总结本课的知识点 123
9.3.2 要掌握的关键点 124
9.3.3 课后上机演练 125
9.3.4 继续下一课:Java设计模式 125
第2部分 Java设计模式
第10课 设计模式概述 131
10.1 了解设计模式 131
10.1.1 设计模式的概念 131
10.1.2 设计模式的产生—23种设计模式与GoF“四人帮” 132
10.1.3 设计模式不是技术而是思想—构建可重用的程序 132
10.1.4 为什么要使用设计模式 132
10.2 设计模式的分类 133
10.2.1 创建型模式 133
1.工厂方法模式(Factory Method)
2.抽象工厂模式(Abstract Factory)
3.单例模式(Singleton)
4.建造者模式(Builder)
5.原型模式(Prototype)
10.2.2 结构型模式 133
1.适配器模式(Adapter)
2.装饰器模式(Decorator)
3.代理模式(Proxy)
4.外观模式(Facade)
5.桥接模式(Bridge)
6.组合模式(Composite)
7.享元模式(Flyweight)
10.2.3 行为型模式 134
1.策略模式(Strategy)
2.模板方法模式(Template Method)
3.观察者模式(Observer)
4.迭代子模式(Iterator)
5.责任链模式(Chain of Responsibility)
6.命令模式(Command)
7.备忘录模式(Memento)
8.状态模式(State)
9.访问者模式(Visitor)
10.中介者模式(Mediator)
11.解释器模式(Interpreter)
10.2.4 并发型模式 135
10.2.5 线程池模式 136
10.3 设计模式六大原则 136
10.3.1 开闭原则(Open Closed Principle) 136
10.3.2 里氏代换原则(Liskov Substitution Principle) 138
10.3.3 依赖倒转原则(Dependence Inversion Principle) 141
10.3.4 接口隔离原则(Interface Segregation Principle) 141
1.接口对应的角色
2.角色对应的接口
10.3.5 迪米特法则(最少知道原则)(Demeter Principle) 143
10.3.6 合成复用原则(Composite Reuse Principle) 144
10.4 模式的讲解思路 145
1.模式的核心思想
2.何时使用
3.Java中的应用
10.5 本课小结 146
10.5.1 总结本课的知识点 146
10.5.2 要掌握的关键点 147
10.5.3 继续下一课:5种创建型模式 148
第11课 5种创建型模式 149
11.1 工厂方法模式(Factory Method) 150
11.1.1 工厂方法模式的核心思想及分类 150
11.1.2 第一种—工厂方法模式 152
11.1.3 第二种—多个工厂方法模式 154
11.1.4 第三种—静态工厂方法模式(简单工厂模式) 156
11.1.5 何时使用工厂方法模式 157
11.1.6 Java中的应用—Swing中的静态工厂类BorderFactory 158
11.2 抽象工厂模式(Abstract Factory) 161
11.2.1 抽象工厂模式的核心思想 161
11.2.2 何时使用抽象工厂模式 164
11.3 单例模式(Singleton) 164
11.3.1 单例模式的核心思想 164
11.3.2 何时使用单例模式 165
11.3.3 属性文件加载工厂实例 165
11.3.4 Java中的应用—日历单例类Calendar 167
11.4 建造者模式(Builder) 168
11.4.1 建造者模式的的核心思想 168
11.4.2 何时使用建造者模式 170
11.4.3 Java中的应用—字符串建造者类StringBuilder 171
11.4.4 Java中的应用—进程建造者类ProcessBuilder 173
11.5 原型模式(Prototype) 174
11.5.1 原型模式的核心思想 174
11.5.2 浅复制与深复制 175
11.5.3 何时使用原型模式 178
11.6 本课小结 179
11.6.1 总结本课的知识点 179
11.6.2 要掌握的关键点 179
11.6.3 继续下一课:7种结构型模式 180
第12课 7种结构型模式 181
12.1 适配器模式(Adapter) 182
12.1.1 适配器模式的核心思想 182
12.1.2 第一种:类的适配器模式(对类进行适配) 183
12.1.3 第二种:对象的适配器模式(对对象进行包装) 185
12.1.4 第三种:接口的适配器模式(对接口抽象化) 187
12.1.5 何时使用适配器模式 190
12.1.6 Java中的应用—Iterator适配器(对象的适配器模式) 190
12.1.7 Java中的应用—Enumeration适配器(对象的适配器模式) 192
12.1.8 Java中的应用—AWT事件适配器(接口的适配器模式) 194
12.1.9 Java中的应用—I/O字节流到字符流的适配器(对象的适配器模式) 197
1.字节输入流转换为字符输入流
2.字节输出流转换为字符输出流
12.2 装饰器模式(Decorator) 200
12.2.1 装饰器模式的核心思想 201
12.2.2 何时使用装饰器模式 205
12.2.3 Java中的应用—I/O输入/输出流管道的装饰器模式 205
12.2.4 Java中的应用—Sitemesh装饰器 207
12.3 代理模式(Proxy) 208
12.3.1 代理模式的核心思想 208
12.3.2 何时使用代理模式 211
12.3.3 Java中的应用—Java动态代理机制 212
12.4 外观模式(Facade) 214
12.4.1 外观模式的核心思想 214
12.4.2 何时使用外观模式 218
12.4.3 Java中的应用 218
12.5 桥接模式(Bridge) 218
12.5.1 桥接模式的核心思想 218
12.5.2 何时使用桥接模式 222
12.5.3 在Java中的应用—JDBC桥DriverManager 222
12.6 组合模式(Composite) 223
12.6.1 组合模式的核心思想—树形结构 223
12.6.2 何时使用组合模式 225
12.6.3 Java中的应用—AWT容器Container 226
12.7 享元模式(Flyweight) 226
12.7.1 享元模式的核心思想—共享 227
12.7.2 何时使用享元模式 227
12.7.3 Java中的应用—数据库连接池 228
12.8 本课小结 230
12.8.1 总结本课的知识点 230
12.8.2 要掌握的关键点 232
12.8.3 继续下一课:11种行为型模式 232
第13课 11种行为型模式 233
13.1 策略模式(Strategy) 234
13.1.1 策略模式的核心思想 235
13.1.2 何时使用策略模式 239
13.1.3 Java中的应用—AWT布局管理器 239
13.1.4 Java中的应用—Swing边界类Border 240
13.2 模板方法模式(Template Method) 241
13.2.1 模板方法模式的核心思想 241
13.2.2 何时使用模板方法模式 246
13.2.3 Java中的应用—HTTP请求处理类HttpServlet 246
1.init()方法
2.service()方法
3.destroy()方法
4.GetServletConfig()方法
5.GetServletInfo()方法
13.3 观察者模式(Observer) 249
13.3.1 观察者模式的核心思想 249
13.3.2 何时使用观察者模式 252
13.3.3 Java中的应用—Observable和Observer观察者实现 253
13.3.4 Java中的应用—AWT事件监听机制 254
13.4 迭代子模式(Iterator) 255
13.4.1 迭代子模式的核心思想 256
13.4.2 何时使用迭代子模式 260
13.4.3 Java中的应用—Java集合类迭代子Iterator和Enumeration 260
1.枚举(Enumeration)接口
2.迭代器(Iterator)接口
13.4.4 Java中的应用—JDBC查询数据集迭代子ResultSet 262
13.4.5 Java中的应用—JSP分页器 263
13.5 责任链模式(Chain of Responsibility) 264
13.5.1 责任链模式的核心思想 265
13.5.2 何时使用责任链模式 267
13.5.3 Java中的应用—I/O输入/输出流管道的责任链模式 267
13.6 命令模式(Command) 269
13.6.1 命令模式的核心思想 269
13.6.2 何时使用命令模式 271
13.6.3 Java中的应用—AWT界面事件处理 272
1.音乐播放器主程序MusicPlayer.java
2.播放线程PlayThread.java
3.运行MP3音乐播放器
13.7 备忘录模式(Memento) 278
13.7.1 备忘录模式的核心思想 278
13.7.2 何时使用备忘录模式 280
13.7.3 Java中的应用—Session和Application对象 281
1.Session会话对象
2.Application应用程序对象
13.8 状态模式(State) 281
13.8.1 状态模式的核心思想 282
13.8.2 何时使用状态模式 284
13.8.3 Java中的应用—Java工作流引擎 285
13.9 访问者模式(Visitor) 286
13.9.1 访问者模式的核心思想 286
13.9.2 何时使用访问者模式 289
13.9.3 Java中的应用—Java Annotaion访问者实现 290
13.10 中介者模式(Mediator) 291
13.10.1 中介者模式的核心思想 291
13.10.2 何时使用中介者模式 294
13.10.3 Java中的应用—Java多线程数据共享 294
1.产品类
2.产品仓库类
3.生产者类
4.消费者类
5.测试类
6.运行结果
13.11 解释器模式(Interpreter) 299
13.11.1 解释器模式的核心思想 299
13.11.2 何时使用解释器模式 302
13.11.3 Java中的应用—Java正则表达式解释器Pattern 303
13.12 本课小结 303
13.12.1 总结本课的知识点 303
13.12.2 要掌握的关键点 305
13.12.3 继续下一课:面向服务架构SOA 306
第3部分 面向服务架构SOA
第14课 Web服务协议—SOAP、WSDL、UDDI和WS协议集 309
14.1 Web服务概述 309
14.1.1 什么是Web服务 309
14.1.2 为什么要使用Web服务 310
1.传统应用程序
2.分布式计算
3.Web服务
14.1.3 使用Web服务的方式 312
1.远程过程调用—XML-RPC服务调用
2.面向服务架构SOA—SOAP服务调用
3.表述性状态转移—REST服务调用
14.2 Web服务基本规范 313
14.2.1 Web服务协议族 314
14.2.2 Web服务通信协议—简单对象访问协议(SOAP) 315
14.2.3 Web服务描述协议—Web服务描述语言(WSDL) 317
14.2.4 Web服务发现协议—统一描述、发现和集成(UDDI) 320
14.3 Web服务扩展规范—WS协议集 325
14.3.1 WS安全(WS-Security) 325
14.3.2 WS策略(WS-Policy) 326
14.3.3 WS寻址(WS-Addressing) 327
14.3.4 WS业务流程(WS-BPEL) 328
14.4 本课小结 331
14.4.1 总结本课的知识点 331
14.4.2 要掌握的关键点 332
14.4.3 继续下一课:Web服务开发技术—使用JAX-WS开发Web服务 333
第15课 Web服务开发技术—使用JAX-WS开发Web服务 335
15.1 JAX-WS概述 335
15.1.1 JAX-WS简介 335
15.1.2 JAX-WS与JAX-RPC之间的关系 336
15.1.3 为什么要使用JAX-WS 336
15.2 JAX-WS快速上手—HelloWorld实例 337
15.2.1 开发Web Service服务器端—JAXWSHelloWorldServer项目 337
1.创建服务器端类HelloWorld.java
2.运行wsgen导出服务器端代码
3.导出文件目录结构
4.生成的Java代码SayHello.java
5.生成的Java代码SayHelloResponse.java
6.生成的WSDL文件HelloWorldService.wsdl
7.生成的XSD文件HelloWorldService_schema1.xsd
15.2.2 发布Web Service服务 341
1.编写服务器端启动程序HelloWorldServer.java
2.启动Web Service服务
15.2.3 开发Web Service客户端—JAXWSHelloWorldClient项目 342
1.运行wsimport导出客户端代码
2.导出文件目录结构
3.生成接口类HelloWorld.java
4.生成实现类HelloWorldService.java
5.生成对象工厂类ObjectFactory.java
6.编写客户端类HelloWorldClient.java
7.运行客户端类
15.2.4 打包JAXWSHelloWorldServer.zip和JAXWSHelloWorldClient.zip 347
15.3 本课小结 348
15.3.1 总结本课的知识点 348
15.3.2 要掌握的关键点 349
15.3.3 继续下一课:Web服务开发框架—使用Axis框架开发Web服务 349
第16课 Web服务开发框架—使用Axis框架开发Web服务 351
16.1 常用的Web服务框架 351
16.1.1 Apache服务框架Axis 351
16.1.2 CodeHaus服务框架XFire 352
16.1.3 Apache服务框架CXF 353
16.2 Axis服务框架简介 353
16.2.1 Axis框架 353
16.2.2 Axis2框架 353
16.2.3 Axis2的扩展 354
16.3 Eclipse+Axis2整合开发Web Service—HelloWorld实例 354
16.3.1 下载并安装Axis2 355
16.3.2 配置Eclipse与Axis2的集成 356
16.3.3 开发Web Service服务器端—AxisHelloWorldServer项目 356
1.新建服务类HelloWorld.java
2.新建并发布Web Service
3.访问Web Service
16.3.4 开发Web Service客户端—AxisHelloWorldClient项目 360
1.导出Web Service客户端代码
2.编写客户端类
3.运行客户端类
16.3.5 打包AxisHelloWorldServer.zip和AxisHelloWorldClient.zip 362
16.4 本课小结 363
16.4.1 总结本课的知识点 363
16.4.2 要掌握的关键点 364
16.4.3 继续下一课:SOA面向服务架构—Sun的JBI和IBM/BEA的SCA/SDO 364
第17课 SOA面向服务架构—Sun的 JBI和IBM/BEA的SCA/SDO 367
17.1 SOA概述 367
17.1.1 SOA的基本定义—SOA是一种架构模型 367
17.1.2 SOA的本质特征—SOA不是一种技术,而是一种的样式 368
17.1.3 使用SOA的好处 368
17.2 构成SOA的技术 369
17.2.1 构成SOA的技术 369
17.2.2 实现SOA的技术标准 370
17.2.3 本书SOA讲解的内容 371
17.3 本课小结 371
17.3.1 总结本课的知识点 371
17.3.2 要掌握的关键点 372
17.3.3 继续下一课:JBI业务集成架构—Java实现SOA的标准途径 372
第18课 JBI业务集成架构—Java实现 SOA的标准途径 373
18.1 JBI概述 373
18.1.1 JBI是什么 373
18.1.2 JBI产生的原因 374
18.1.3 如何使用JBI 374
18.2 JBI服务架构—基于插件方式的架构 375
18.2.1 组件框架—把不同类型的组件部署到JBI容器 375
1.绑定组件(BC,Binding Components)
2.服务引擎组件(SEC,Service Engines Components)
18.2.2 规范化消息路由器—利用标准机制实现服务间消息交换 376
18.2.3 管理框架—基于JMX进行部署、管理及监控JBI容器中的组件 376
18.3 应用JBI解决方案 377
18.3.1 JBI系统开发任务分解 377
1.服务引擎开发
2.绑定组件开发
3.服务开发
4.JBI容器
18.3.2 JBI可以集成的功能 377
18.3.3 JBI开源项目 378
18.4 本课小结 379
18.4.1 总结本课的知识点 379
18.4.2 要掌握的关键点 379
18.4.3 继续下一课:SCA服务组件架构—实现SOA的最佳方式 380
第19课 SCA服务组件架构—实现SOA的 最佳方式 381
19.1 SCA概述 381
19.1.1 SCA的产生 381
19.1.2 SCA服务架构 382
19.1.3 SCA基本概念 383
1.服务组件(Component)
2.服务模块(Composite)
3.接口(Interface)和引用(Reference)
4.导入(Import)和导出(Export)
5.共享库
6.独立引用
19.1.4 SCA基本规范 384
19.1.5 SCA的扩展性 386
19.1.6 SCA的优势 386
19.1.7 SCA与JBI的区别 387
19.2 SCA解决方案 388
19.2.1 SCA开源项目 388
19.2.2 SCA商业产品 388
19.2.3 Apache的Tuscany 388
19.2.4 Eclipse下SOA开发插件STP 389
19.3 使用Tuscany构建SCA服务器端与客户端—计算器实例 390
19.3.1 新建项目并设置Tuscany环境 391
19.3.2 开发SCA服务器端组件 392
1.加法模块AddService
2.减法模块SubtractService
3.乘法模块MultiplyService
4.除法模块DivideService
5.主模块CalculatorService
19.3.3 传统的调用方式 396
19.3.4 配置SCA服务器端 396
19.3.5 开发SCA客户端 398
1.创建节点
2.启动节点
3.定位服务
4.停止节点
19.3.6 运行客户端 399
19.3.7 打包SCAJava.zip 400
19.4 使用Tuscany构建分布式Web服务—HelloWorld实例 401
19.4.1 通过SCA服务器端发布Web服务 401
1.创建SCA服务器端
2.配置SCA服务
3.启动SCA服务器端
4.测试Web服务
19.4.2 通过SCA客户端访问远程Web服务 404
1.配置客户端组件HelloWorld.composite
2.添加组件引用HelloWorldImpl.java
3.开发客户端HelloWorldClient.java
4.运行客户端
19.4.3 打包SCAWSServer.zip和SCAWSClient.zip 406
19.5 本课小结 407
19.5.1 总结本课的知识点 407
19.5.2 要掌握的关键点 408
19.5.3 继续下一课:SDO服务数据对象—SCA数据服务组件 409
第20课 SDO服务数据对象—SCA数据服务组件 411
20.1 SDO概述 411
20.1.1 SDO是什么 411
20.1.2 SDO数据模型 412
1.数据对象(Data Object)
2.数据图(Data Graph)
3.数据访问服务(Data Access Services,DAS)
20.1.3 SDO的特性 413
1.SDO统一访问异构的数据源
2.SDO统一支持静态和动态数据API
3.SDO支持离线编程模型
4.SDO支持基于常见设计模式的客户数据访问层
5.SDO降低应用代码和数据访问代码之间的耦合度
20.2 SDO与其他数据模型对比 414
20.2.1 SDO与DAO的对比 414
20.2.2 SDO与JDO的对比 415
20.2.3 SDO与JAXB的对比 415
20.2.4 SDO与ADO.NET的对比 415
20.3 SDO核心类简介 415
20.3.1 SDO数据对象DataObject 416
20.3.2 SDO数据图DataGraph 420
20.3.3 SDO数据类型Type 421
20.3.4 SDO帮助类 423
20.4 本课小结 423
20.4.1 总结本课的知识点 423
20.4.2 要掌握的关键点 424
20.4.3 继续下一课:OSGi体系架构—SCA的一种实现方式 425
第21课 OSGi体系架构—SCA的一种实现方式 427
21.1 OSGi概述 427
21.1.1 什么是OSGi 427
21.1.2 OSGi体系结构 428
1.Java执行环境层
2.模块层(系统类库)
3.生命周期层(OSGi)
4.服务注册层(服务)
5.应用层(Bundle)
6.服务层
21.1.3 OSGi开源框架 430
1.Equinox项目
2.Knopflerfish框架
3.Felix框架
21.2 OSGi与SCA的关系 431
21.2.1 OSGi与SCA的区别 431
1.出发点不同
2.所关注的目标不同
3.面向的服务不同
4.面向的技术不同
21.2.2 OSGi与SCA结合的架构 432
21.2.3 OSGi与SCA结合的方式 432
21.3 OSGi在实际中的应用 433
21.3.1 OSGi与Eclipse和Equinox 433
21.3.2 OSGi在Spring上的应用 434
21.3.3 Eclipse下的OSGi开发样例—HelloWorld实例 435
1.新建OSGi项目
2.编辑代码
3.运行项目
4.OSGi控制台
5.导出应用程序
21.4 本课小结 441
21.4.1 总结本课的知识点 441
21.4.2 要掌握的关键点 442
21.4.3 继续下一课:SOA延伸技术—BPEL、ESB与EAI 443
第22课 SOA延伸技术—BPEL业务流程管理、ESB企业服务总线与EAI企业应用集成 445
22.1 BPEL业务流程管理—实现Web服务整合 445
22.1.1 什么是业务流程 445
22.1.2 什么是BPEL 446
22.1.3 BPEL产生的背景 446
22.1.4 使用BPEL的好处 447
22.1.5 BPEL开源引擎 447
22.2 ESB企业服务总线—提供统一的Web服务总线 447
22.2.1 ESB产生的原因 448
22.2.2 ESB服务总线架构 448
22.2.3 ESB服务总线的作用 449
22.2.4 ESB开源实现 449
1.Codehaus社区的Mule
2.Apache社区的ServiceMix
3.Open ESB
4.Apache Synapse
5.JBoss ESB
6.WSO2
7.OpenAdaptor
22.3 EAI企业应用集成 450
22.3.1 EAI的产生 451
22.3.2 EAI是什么 451
22.3.3 EAI系统架构 451
22.3.4 EAI相关技术 452
22.3.5 EAI开源实现 453
1.Apache Camel
2.OpenEAI
3.BIE
4.xBus
5.elemenope
22.4 本课小结 454
22.4.1 总结本课的知识点 454
22.4.2 要掌握的关键点 455
22.4.3 继续下一课:SOA扩展应用—Portal门户组件与Portlet窗口组件 455
第23课 SOA扩展应用—Portal门户组件与Portlet窗口组件 457
23.1 Portal门户技术 457
23.1.1 什么是Portal 457
23.1.2 Portal的功能 458
1.Portlet容器
2.内容聚集
3.公共服务
23.1.3 Portal工作原理 459
23.1.4 Portal开源框架 459
1.Apache的Pluto框架
2.Apache的JetSpeed
3.Liferay
23.2 Portlet组件技术 461
23.2.1 什么是Portlet 461
23.2.2 Portlet执行过程 461
23.2.3 Portlet生命周期 462
1.init()初始化
2.processAction()动作处理
3.render()呈现内容
4.destroy()
23.2.4 Portlet编程方式 462
23.3 本课小结 463
23.3.1 总结本课的知识点 463
23.3.2 要掌握的关键点 464
23.3.3 继续下一课:SOA服务架构开发实战—基于Tuscany+Spring的企业信息管理系统 464
第24课 SOA服务架构开发实战—基于Tuscany+Spring的企业信息管理系统 465
24.1 了解并运行原有系统—基于Struts 2+Spring+Hiberante的Web应用 465
24.1.1 基本功能—登录、退出与注册 466
1.基础功能流程图
2.用户登录功能
3.用户退出功能
4.用户注册功能
24.1.2 业务功能—企业信息管理系统功能 467
1.通讯录管理模块
2.短消息管理模块
3.日程安排模块
4.工作记录模块
5.公司公告模块
6.工作会议模块
24.1.3 数据库结构 468
1.数据库需求分析
2.设计数据表E-R图
3.数据表结构
24.1.4 安装并运行MySQL数据库 472
1.下载MySQL
2.安装MySQL
3.MySQL的启动与停止
4.MySQL服务的启动与停止
5.安装MySQL客户端软件SQL-Front
6.新建数据库demo
7.新建用户表user
8.创建数据表
24.1.5 导入项目并运行系统 479
24.2 开发基于Tuscany+Spring的SCA服务器端 480
24.2.1 新建项目EmisService并添加JAR和Tuscany支持库 481
24.2.2 添加DAO层和Service层代码 481
24.2.3 添加Pager分页类的具体类 483
24.2.4 将Service接口设置为远程接口 492
24.2.5 将Service发布为Web服务—集成配置Tuscany+Spring组件 493
24.2.6 开发SCA服务启动类EmisServiceServer.java 496
24.2.7 启动SCA服务并查看Web服务 496
24.3 开发基于Struts 2+Spring+SCA的Web应用—SCA服务的客户端 499
24.3.1 新建项目EmisWeb并添加JAR和Tuscany支持库 499
24.3.2 添加Web层和Action层代码 499
24.3.3 添加Service层接口代码 501
24.3.4 配置SCA客户端访问Web服务 502
24.3.5 配置Spring访问SCA组件—集成配置Spring+Tuscany组件 506
24.3.6 运行程序 510
24.4 打包EmisService.zip和EmisWeb.zip 513
24.5 本课小结 516
24.5.1 总结本课的知识点 516
24.5.2 要掌握的关键点 517
24.5.3 继续下一课:面向资源架构ROA—基于REST风格的Web服务 518
第4部分 面向资源架构ROA
第25课 ROA面向资源架构—基于REST风格的Web服务 521
25.1 REST概述 521
25.1.1 REST产生的背景 521
1.ORB(Object Request Broker)
2.SOA
3.REST
25.1.2 什么是REST—REST是一种架构样式 522
25.1.3 REST基本原理—使用CRUD原则表达URI 522
25.1.4 REST设计方法 523
1.查看图书列表
2.查看某一本图书信息
3.新增一个订单
25.1.5 REST开源框架 525
1.Ruby on Rails框架
2.Apache Axis2(://ws.apache.org/axis2/)
3.Jersey框架
4.Restlet框架()
5.Cetia4(https://cetia4.dev.java.net/)
6.sqlREST()
7.REST-art()
25.2 ROA面向资源架构 526
25.2.1 构建REST式的Web服务 527
25.2.2 ROA面向资源架构 527
25.3 本课小结 528
25.3.1 总结本课的知识点 528
25.3.2 要掌握的关键点 528
25.3.3 继续下一课:面向云架构COA 529
第5部分 面向云架构COA
第26课 COA面向云架构—云计算与云架构 533
26.1 云计算的发展 533
26.1.1 网格计算(Grid Computing) 533
26.1.2 集群计算(Cluster Computing) 534
1.高可用性集群High-Availability(HA)Clusters
2.负载均衡集群Load Balancing Clusters
3.高性能计算集群 High-Performance(HPC)Clusters
4.网格计算Grid Computing
26.1.3 分布式计算(Distributed Computing) 535
1.传统的C/S模型
2.集群技术
3.通用型分布式计算环境
26.1.4 云计算(Cloud Computing) 536
26.2 云计算与云架构 536
26.2.1 云计算的特点 536
26.2.2 云计算的实现形式 537
26.2.3 云计算的实际应用 537
1.Amazon的弹性计算云
2.Google的Google AppEngine
3.IBM的“蓝云”计算平台
4.微软的Windows Azure蓝天操作系统
5.Sun的“Hydrazine”计划
6.Salesforce的Force.com
26.3 本课小结 539
26.3.1 总结本课的知识点 539
26.3.2 要掌握的关键点 539
26.3.3 继续下一课:架构师之路 540
第6部分 架构师之路
第27课 软件架构师职业规划 543
27.1 了解软件架构 543
27.1.1 软件架构与软件架构师 543
1.什么是软件架构
2.什么是Java Web软件架构
3.什么是软件架构原型
4.什么是软件架构师
27.1.2 软件架构的历史 544
27.1.3 软件架构的目标 544
27.2 软件架构师的职责 545
27.2.1 软件架构师的具体工作 545
27.2.2 软件架构师的要求 545
27.2.3 软件架构师的成长阶段 546
27.3 软件架构师职业发展 546
27.3.1 产品管理 546
27.3.2 项目管理 547
27.3.3 团队建设 547
27.3.4 发展战略CTO 548
27.4 本课小结 548
27.4.1 总结本课的知识点 548
26.4.2 要掌握的关键点 549
27.4.3 本课总结 550
《高手真经》系列后记 551