第一部分 引言 1
第1章 应用示例——汽车配件 1
1.1 应用的使用案例 1
1.1.1 本地经销商查询 2
1.1.2 对汽车制造商的系统进行查询 2
1.1.3 对其它的配制制造商进行动态的查询 2
1.1.4 经销商横向查询的实现 3
1.2 系统设计 3
1.2.1 第一阶段:本地经销商查询 4
1.2.2 第二阶段:对汽车制造商的系统进行查询 4
1.2.3 第三阶段:对其它的制造商进行动态的查询 5
1.2.4 第四阶段:经销商横向查询的实现 6
1.2.5 系统框图 7
1.2.6 数据模型 7
1.3 应用使用到的产品 8
1.4 小结 8
测验 8
第二部分 WSAD 10
第2章 WSAD概述 10
2.1 产品 10
2.2 WebSphere Studio工作台 11
2.2.1 Meta Object Framework: MOF 12
2.2.2 Concurrent Version System: CVS 12
2.2.3 ClearCase LT(CCLT) 12
2.3 工作台窗口 12
2.4 透视图 12
2.4.1 视图(View) 13
2.4.2 导航器视图(Navigator view) 13
2.4.3 编辑器(Editor) 13
2.4.4 轮廓视图(Outline view) 14
2.4.5 特性视图(Properties view) 14
2.4.6 任务视图(Tasks view) 14
2.4.7 定制透视图 15
2.4.8 Web透视图 15
2.4.9 Java透视图 16
2.4.10 J2EE透视图 17
2.4.11 数据透视图 18
2.4.12 XML透视图 18
2.4.13 服务器透视图 19
2.4.14 调试透视图 20
2.4.15 帮助透视图 21
2.5 项目 21
2.5.1 Java项目 22
2.5.3 Web项目 26
2.5.4 EJB项目 29
2.5.5 服务器项目 31
2.6 WSAD内部系统文件 35
2.7 总结 36
测验 36
第3章 WSAD的Web应用开发 37
3.1 “汽车配件”应用示例第一阶段的方案纲要 37
3.1.1 类图和顺序图 37
3.2 开发前的准备工作 38
3.2.1 创建一个新的工人空间 39
3.2.2 项目配置 39
3.2.3 考察自动生成的Web项目文件 40
3.2.4 创建ITSOWSAD样本数据库 41
3.2.5 为已生成的servlet创建一个合适的Java包 42
3.3 构建应用 42
3.3.1 生成基本的Web应用程序 42
3.3.2 设计表单并生成选项 47
3.3.3 查看已生成的各类文件 49
3.3.4 部署描述文件seb.xml 50
3.3.5 改变背景 51
3.3.6 增加图片显示的支持 52
3.3.7 如何使用4.0.2之前的版本代码应作必要的修改 55
3.4 部署和测试Web应用 57
3.4.1 创建一个服务器项目 57
3.4.2 创建一个服务器实例和配置 57
3.4.3 将项目与服务器配置关联 58
3.4.4 添加JDBC数据源 59
3.4.5 执行Web应用 61
3.5 总结 63
测验 63
第4章 WSAD中的 XML支持 64
4.1 XML基本知识 64
4.1.1 背景 64
4.1.2 XML基本概念 65
4.1.3 XML namespace 68
4.1.4 XML schema 69
4.1.5 处理XML 71
4.1.6 XML解析器 72
4.1.7 XML处理器 73
4.1.8 小结 73
4.2 WAD中支持XML的工具 73
4.3 示例的解决方案概要 74
4.3.1 类图 75
4.3.2 顺序图 76
4.4 开发的准备 77
4.5 由SQL产生XML文件和XML schema 79
4.6 浏览和编辑XML力XSD文件 80
4.6.1 编辑XML文件 80
4.6.2 编辑XSD文件 81
4.6.3 验证XML文件的有效性 82
4.6.4 编辑XML schema和数据文件 82
4.6.5 修改XML以匹配新的schema 85
4.6.6 直接编辑XML 85
4.6.7 创建XML到XML的映射 86
4.7.1 用样式表将XML转换成另一个XM 90
4.7.2 用样式表将XML转换成HTML 92
4.7.3 解析 XML文件 93
4.7.4 由Java程序创建XML文件 95
4.8 展望 96
测验 96
第5章 WSAD的EJB开发 97
5.1 汽车配件应用示例第二阶段a部分解决方案概述 97
5.1.1 类图 98
5.1.2 顺序图 100
5.2 应用开发的准备工作 100
5.2.1 项目配置 100
5.2.2 EJB映射方法回顾 101
5.3 构建实体EJBs 101
5.3.1 创建实体EJBs 102
5.3.2 查看生成的文件 104
5.3.3 EJB类的回顾 107
5.3.4 产生的EJB元数据 107
5.3.5 生成映射 107
5.3.6 添加对主键域的getter方法 109
5.3.7 定义getter方法为只读属性 110
5.3.8 将EJBs绑定到JDBC数据源 111
5.3.9 验证项目的有效性 112
5.3.10 生成部署代码 112
5.4 测试实体EJBs 113
5.4.1 将EAR项目与服务器配置相关联 113
5.4.2 执行EJB客户端测试参考程序 114
5.5 开发前端会话EJB 118
5.5.1 创建会话EJB 118
5.5.2 完成前端会话EJB 119
5.5.3 提升新的方法至EJB远程接口 123
5.5.4 定义EJB引用 123
5.5.5 验证项目有效性 125
5.5.6 生成部署代码 125
5.6 测试会话EJB 125
5.7 总结 126
测量 126
第6章 WebSphere环境下Web和 EJB应用的部署 128
6.1 WebSphere Aws和AE的区别 128
6.2 部署到WebSphere AWs 128
6.2.1 导出EAR文件 129
6.2.2 启动AEs服务器 129
6.2.3 启动管理控制台 131
6.2.4 创建JDBC驱动器和数据源 131
6.2.5 安装Almaden Autos企业应用 133
6.2.6 安装Mighty Motors企业应用 134
6.2.7 保存配置 136
6.2.8 停止Aes服务器 137
6.2.9 使用SEAppInstall工具部署企业应用 137
6.2.10 部署EJB测试客户机 137
6.2.11 验证企业应用 139
6.2.12 重新生成plug-in 140
6.3 在Aes中测试部署的应用 141
6.3.1 使用内嵌HTTP服务器测试 142
6.3.2 使用IBM HTTP服务器(AEs)测试 142
6.4 部署到WebSphere AE 142
6.4.1 启动管理服务器 142
6.4.2 启动管理控制台 142
6.4.3 创建JDBC驱动器和数据源 143
6.4.4 创建应用服务器 144
6.4.5 安装Almaden Autos企业应用 145
6.4.6 安装Mighty Motos企业应用 147
6.4.7 安装WebSphere AE应用服务器 149
6.5 在WebSphere AE上测试部署的应用 149
6.5.1 使用内嵌HTTP服务器测试 150
6.5.2 使用IBM HTTP服务器(AE)测试 151
6.6 使用WSAD进行远程单元测试 151
6.7 总结 155
测验 155
第7章 小组开发 156
7.1 小组开发概述 156
7.1.1 可扩展的体系结构 156
7.1.2 CVS与ClearCase之间的区别 157
7.2 工作空间 158
7.2.1 本地历史信息 158
7.2.2 设定多工作空间 158
7.2.3 在服务器上执行WSAD的可执行代码 159
7.3 小组开发术语介绍 159
7.3.1 流 159
7.3.3 分支 160
7.3.4 版本 161
7.3.5 术语矩阵 161
7.4 小组开发透视图(Team) 161
7.4.1 透视图概述 161
7.4.2 连接CVS资源库 162
7.4.3 查看HEAD流中的项目 163
7.4.4 浏览资源的历史信息 163
7.4.5 比较资源库中一个文件的两个版本 164
7.4.6 添加项目至工作空间 165
7.4.7 改变项目类型 166
7.4.8 配置项目 167
7.5 安装本地CVS资源库 167
7.5.1 下载并安装CVS 167
7.5.2 创建新的资源库 167
7.5.3 创建Windows服务 168
7.5.4 创建新用户 168
7.6 模拟小组开发 168
7.6.1 配置 168
7.6.2 顺序开发情景 169
7.6.3 在单个流中并行开发的情景 171
7.6.4 使用多个流分别开发的情景 174
7.7 小组开发的其它话题 176
7.7.1 确定需要管理的文件 177
7.7.2 备份CVS资源库 177
7.7.3 资源库管理 177
7.7.4 实现安全 177
7.7.5 构建脚本 178
7.7.6 管理类路径 178
7.7.7 使用CVS宏 179
7.7.8 监视文件的调整 179
7.7.9 其它CVS命令 179
测验 179
第三部分 Web服务器 180
第8章 Web服务体系结构概述 180
8.1技术机动 180
8.1.1 技术基础 181
8.2 面向服务的体系结构介绍 182
8.2.1 服务的角色 183
8.2.2 SOA栈 183
8.2.3 先看几个示例 185
8.2.4 SOA的实现 187
8.2.5 接下来是什么 188
8.3 开发Web服务 189
8.3.1 开发步骤 189
8.3.2 提供者和请求者的开发策略 190
8.3.3 服务生命周期 191
8.3.4 接下来是什么 193
8.4 SOAP介绍 193
8.4.1 概述 193
8.4.2 SOAP消息的结构 194
8.4.3 URN 195
8.4.4 封装 195
8.4.5 高级概念 197
8.4.6 Apache SOAP实现 199
8.4.7 SOAP小结 202
8.5 WSDL入门 204
8.5.1 概述 204
8.5.2 WSDL文档的结构 205
8.5.3 服务实现文档 208
8.5.4 服务接口文档 209
8.5.5 绑定 210
8.5.6 WSDL的API 213
8.5.7 WSDL小结 214
8.6 UDDI概述 215
8.6.1 UDDI注册系统结构 215
8.6.2 标识(identification)和分类(categorization) 218
8.6.3 UDDI API概述 219
8.6.4 UDDI注册系统的结构 220
8.6.5 已有的注册系统 221
8.6.6 UDDI小结 221
8.7 部结 222
测验 224
第9章 对Web服务的产品支持 225
9.1 WSAD 225
9.1.1 Web服务向导 226
9.1.2 Web服务客户端向导 227
9.1.3 Web服务器骨架JavaBean向导 228
9.1.4 Web服务DADX组配置向导 228
9.1.5 UDDI浏览器(入口,出口) 229
9.2.1 WSTK,WSAD和其他IBM工具之间的关系 229
9.2.2 WSTK体系结构 229
9.2.3 设计时组件 230
9.2.4 运行时组件 231
9.2.5 其他组件和功能 231
9.3 WSAD 4.0版 231
9.4 DB2 232
9.5 Versate 232
9.5.1 Versata XML和Web服务工具包 232
9.5.2 VLS中作为Web服务的导出规则 233
9.5.3 由业务规则调用Web服务 233
9.6 总结 234
测验 234
第10章 静态Web服务 235
10.1 “汽车配件”应用示例第二阶段b部分的解决方案概要 235
10.1.1 类和顺序图 236
10.2 准备开发 237
10.2.1 创建新项目ITSOMightyWeb 237
10.3 Web服务类型 237
10.4 创建Mighty Motors的Web服务InquireParts 238
10.5 创建JavaBean wrapper 238
10.5.1 为JavaBean创建一个包 238
10.5.2 创建JavaBean 239
10.5.3 实现JavaBean:InquireParts 239
10.5.4 测试JavaBean 243
10.6 创建Web服务 244
10.6.1 使用Web服务向导 246
10.6.2 配置Web服务特性 246
10.6.3 Web服务的作用域 247
10.6.4 使用安全SOAP 248
10.6.5 选择JavaBean方法和编码类型 248
10.6.6 XML/Java之间的映射 249
10.6.7 定义Java至XML的映射 249
10.6.8 代理生成 250
10.6.9 定义XML至Java的映射 251
10.6.10 校验SOAP绑定 252
10.6.11 Web服务测试客户端 252
10.6.12 生成样本客户端 252
10.6.13 发布Web服务 253
10.7 检查生成的文件 253
10.7.1 使用先前创建的XML Schema 254
10.7.2 Web服务的WSDL文件 254
10.7.3 修改服务实现 254
10.7.4 修改服务接口 255
10.7.5 生成SOAP部署描述文件 256
10.7.6 SOAP路由servlet 257
10.7.7 检查部署好的Web服务 258
10.7.8 Web服务客户端代理 259
10.7.9 Web服务样本客户端 261
10.7.10 使用TCP/IP监视服务器观察消息内容 262
10.8 创建Almaden Autos的Web服务客户端 266
10.8.1 拷贝WSDL的服务实现 267
10.8.2 创建Web服务客户端 267
10.8.3 检查生在的客户端文件 268
10.8.4 测试Web服务请求者 268
10.8.5 创建客户端应用程序 269
10.8.6 创建XSL样式表 269
10.8.7 创建新的servlet 271
10.8.8 完成servlet 271
10.8.9 在Web应用程序中添加新的servlet的链接 272
10.8.10 测试Web服务客户端 275
10.8.11 关于加强样本程序功能的颠簸 275
10.9 利用会话EJB创建Web服务 275
10.9.1 利用向导创建会话EJB的Web服务 275
10.9.2 测试人 EJB的Web服务 276
10.10 总结 277
测验 278
第11章 动态Web服务 279
11.1 “汽车配件”应用示例第三阶段的解决方案概要 279
11.1.1 类图 281
11.1.2 顺序图 281
11.2 准备开发 282
11.2.1 安装Plenty Parts的Web服务 283
11.2.2 静态 Web服务(重温) 283
11.3 使用WSAD中的UDDI浏览器 284
11.3.1 发布UDDI业务实体 285
11.3.2 把服务的WSDL文件导出到UDDI注册系统 288
11.3.3 使用Web浏览器访问测试注册系统 290
11.3.4 从UDDI注册系统中导入服务的WSDL文件 291
11.3.5 撤消和更新UDDI注册系统中的条目 293
11.4 利用WSDL文件生成SOAP客户端代理 293
11.5 使用UDDI API 294
11.5.1 在UDDI注册系统中查找服务提供者 295
11.6 更新Almaden Autos的Web应用程序 300
11.6.1 UDDI查询servlet 300
11.6.2 创建XSL样式表 301
11.6.3 更新原有的Web应用程序 302
11.7 单元测试 303
11.8 在 WebSphere 4.0中部署增强的应用程序 304
11.9 总结 304
测验 304
第12章 复合Web服务 305
12.1 “汽车配件”应用示例第四阶段的解决方案概要 305
12.1.1 类和交互图 306
12.2 准备开发 307
12.2.1 创建新的经销商 308
12.3 创建Almaden Autos的Web服务 309
12.3.1 创建JavaBean框架 309
12.3.2 检查生成的文件 311
12.3.3 实现JavaBean框架 312
12.3.4 测试Web服务 314
12.4 创建Snata Cruz Sports Cars的Web应用 314
12.4.1 拷贝WSDL文件到ITSOSantaWeb项目中 314
12.4.2 启动服务器 315
12.4.3 创建Web服务的客户端 315
12.4.4 测试代理 315
12.4.5 添加XSL样式表 315
12.4.6 创建调用Web服务的servlet 316
12.4.7 在Web应用程序中添加servlet的链接 317
12.5 测试Santa Cruz Sports Cars的Web应用 317
12.6 总结 318
测验 318
第13章 WebSphere环境下Web服务的部署 320
13.1 部署前的准备 320
13.2 有关URL的注意事项 320
13.3 导出企业应用 321
13.3.1 导出EAR文件 321
13.3.2 添加SOAP管理客户端 321
13.4 部署到WebSphere AEs 323
13.4.1 卸载以前的企业应用通过命令除去 323
13.4.2 安装企业应用 324
13.4.3 为AEs定义8080端口 324
13.4.4 重新生成plug-in并保存配置 325
13.4.5 把必需的JAR文件添加到AEs类路径 325
13.4.6 使用AEs测试应用 325
13.5 部署到WebSphere AE 326
13.5.1 卸载以前的企业应用 326
13.5.2 安装企业应用 327
13.5.3 定义AE的8080端口 327
13.5.4 把必需的JAR文件添加到AE类路径 328
13.5.5 使用AE测试应用 328
13.6 SOAPEAREnabler工具 328
13.7 总结 329
测验 329
第14章 Web服务高级话题 330
14.1 高级SOAP编程 330
14.2 编程方式部署 330
14.3 编码和类型映射选择 331
14.3.1 编码和映射概述 331
14.3.2 用JavaBean作为参数实现Web服务 333
14.3.3 创建定制映射 337
14.3.4 带XML元素和其它参数的消息 342
14.3.5 小结 343
14.4 面向消息的通信 344
14.4.1 准备开发 345
14.4.2 从Web服务客户端访问消息服务 348
14.4.3 测试消息服务 351
14.4.4 小结 352
14.5 其它Web服务支持 353
14.5.1 从DADX文件创建Web服务 353
14.5.2 从URL生成 Web服务 360
14.5.3 小结 361
14.6 高级UDDI话题 361
14.6.1 UDDI operator cloud 361
14.6.2 电子市场UDDI 362
14.6.3 门户UDDI 362
14.6.4 合作目录UDDI 363
14.6.5 内部企业应用集成UDDI 364
14.6.6 试验床UDDI 364
14.6.7 管理UDDI节点间的联系 365
14.7 用Web服务进行业务过程管理 366
14.7.1 IBM WSFL提议 366
14.7.2 WSFL流程模型 367
14.7.3 Web服务和MQSeries Workflow 370
14.7.4 Web服务和MQSeries Integrator 373
14.8 总结 375
测验 375
第15章 体系结构和设计事项 376
15.1 体系结构 376
15.1.1 Web服务公共的使用场景是什么? 376
15.1.2 Web服务在体系结构中的合理定位是什么? 377
15.1.3 对操作模型有何影响? 379
15.1.4 Web服务如何与相似技术关联? 379
15.1.5 安全 380
15.1.6 管理和服务质量(QoS) 381
15.1.7 性能 382
15.1.8 互操作性 382
15.1.9 SOA当前版本中有无不足之处? 383
15.1.10 如何开始我的项目? 383
15.2 设计 383
15.3 早期的最佳实践 385
15.4 故障分析 386
第16章 IBM的jStart计划 388
16.1 jStart提供优势 388
16.2 关于此项计划 388
16.2.1 我们是谁 388
16.2.2 我们如何工作 389
16.2.3 我们做些什么 389
16.3 竞争优势从何而来 389
16.4 Jstart 的engagement模型 389
附录A 产品安装与配置 391
A.1 DB2 v7.2 391
A.1.1 创建数据库示例 391
A.1.2 JDBC版本2 391
A.2 WAS高级版单机服务器版(AEs) 392
A.3 WAS高级版(AE) 392
A.4 WSAD 392
A.4.1 IBM代理控制器 393
A.5 IBM WebSphere UDDI注册系统 393
A.6 定义并装载ITSOWSAD数据库 393
A.6.1 示例数据 393
附录B WSAD中资源的状态转换 396
B.1 流生命周期 396
B.1.1 状态转换图 396
B.1.2 Not existing-HEAD →stream(1) 396
B.1.3 Not existing-Branch →stream(2) 397
B.1.4 Branch stream →Not existing 397
B.2 项目生命周期 397
B.2.1 状态转换图 397
B.2.2 Not existing→Unassigned in workspace (1) 398
B.2.3 Unassigned in workspace→Assigned in workspace (2) 398
B.2.4 Assigned in workspace→In repository stream (3) 398
B.2.5 In repository stream→Assigned in workspace (4) 399
B.2.6 In repository stream→Repository version (5) 399
B.2.7 Repository version→In repository stream (6) 399
B.2.8 Repository version→Assigned in workspace (7) 399
B.2.9 Unassigned in workspace→In repository stream (8) 400
B.2.10 Unassigned in workspace→Not existing (9) 400
B.2.11 Assigned in workspace→Not existing (10) 400
B.2.12 Repository version→Not existing (11) 400
B.3 文件生命周期 400
B.3.1 状态转换图 400
B.3.2 Not existing→Modified in workspace (1) 401
B.3.3 Modified in workspace→Top of stream (2) 402
B.3.4 Top of stream→Below top of stream (3) 402
B.3.5 Top of stream→Base version in workspace (4) 402
B.3.6 In project version→Base version in workspace (5) 403
B.3.7 Base version in workspace→Modified in workspace (6) 403
B.3.8 Modified in workspace→Base version in workspace (7) 403
B.3.9 Below top of stream→Base version in workspace (8) 403
B.3.10 Unassigned in workspace→Not existing (9) 403
B.3.11 Modified in workspace→In local history (10) 403
B.3.12 In local history→Modified in workspace (11) 404
B.3.13 In local history→Not existing (12) 404
附录C 测验题的答案 405
C.1 引言 405
C.2 WSAD概述 405
C.3 WSAD的Web应用开发 406
C.4 WSAD中的XML支持 406
C.5 WSAD的EJB开发 407
C.6 Web和EJB应用的部署 407
C.7 小组开发 408
C.8 Web服务体系结构概论 408
C.9 对Web服务的产品支持 409
C.10 静态Web服务 409
C.11 动态Web服务 409
C.12 复合Web服务 410
C.13 WebSphere环境下Web服务的部署 410
C.14 Web服务的高级话题 410
附录D 附加资料 412
D.1 Web资料的定位 412
D.2 Web资料的使用 412
D.2.1 下载Web资料的系统需求 412
D.2.2 如何使用Web资料 412
D.2.3 目录 413
D.3 指令 414
D.3.1 Setup子目录 414
D.3.2 WSADWeb子目录 415
D.3.3 WSADXML子目录 415
D.3.4 WSADEJB子目录 415
D.3.5 WSADDeploy子目录 415
D.3.6 WSStatic子目录 416
D.3.7 WSDynamic子目录 416
D.3.8 WSComposed子目录 416
D.3.9 WSDeploy子目录 417
D.3.9 WSEnhanced子目录 417
附录E 相关出版物 418
E.1 IBM红皮书 418
E.1.1 其它资源 419
E.2 本书参考的Web站点 420
E.3 如何获得IBM红皮书 421
E.3.1 IBM红皮书集 421
特别注意事项 422
缩写词汇表 423
书中常用词汇/词组的译文 425