第一部分 网格概念 3
第1章 网格计算 3
1.1 一个问题 3
1.2 解决方法:网格计算 4
1.3 书面定义 5
1.4 网格体系结构 6
1.4.1 构造层 6
1.4.2 链接层 6
1.4.3 资源层 7
1.4.4 汇集层 7
1.4.5 应用层 8
1.5 网格系统的例子 8
1.6 小结 8
参考文献 8
第2章 OGSA、WSRF和GT4 10
2.1 OGSA和WSRF 10
2.1.1 开放网格服务体系(OGSA) 10
2.1.2 Web Service资源框架(WSRF) 11
2.2 如何与GT4相关联 12
参考文献 13
第3章 Web服务 14
3.1 一个典型的Web Service调用 15
3.2 Web服务体系 16
3.3 Web Service寻址 17
3.4 实际工作过程 18
3.5 聚焦服务器端 19
参考文献 20
第4章 WSRF 21
4.1 WRSF:关于状态的一切 21
4.2 有状态的资源方法 22
4.3 Web Service资源寻址 23
4.4 资源属性 25
4.5 WSRF说明书 25
4.5.1 WS-ResourceProperties 26
4.5.2 WS-Resource Lifetime 26
4.5.3 WS-ServiceGroup 26
4.5.4 WS-BaseFaults 26
4.6 相关的规格说明 26
4.6.1 WS-Notification 26
4.6.2 WS-Addressing 27
参考文献 27
第5章 Globus Toolkit 4 28
5.1 GT4组件概览 28
5.1.1 安全 28
5.1.2 数据管理 28
5.1.3 执行管理 29
5.1.4 信息服务 30
5.1.5 公共运行时 30
5.2 GT4服务概览 31
参考文献 31
第二部分 GT4 JAVA WS代码第6章 编写第一个有状态Web Service 35
6.1 步骤一:用WSDL定义服务接口 37
6.1.1 WSDL代码 37
6.1.2 WSDL的WSRF和Globus特性 40
6.1.3 命名空间映射 41
6.2 步骤二:用Java实现服务 42
6.2.1 QNames接口 42
6.2.2 实现服务 42
6.3 步骤三:用WSDD配置部署文件(和JNDI) 49
6.3.1 WSDD部署描述符 50
6.3.2 JNDI部署文件 51
6.4 步骤四:利用Ant创建GAR文件 52
6.4.1 Ant 53
6.4.2 globus-build-service脚本和buildfile 54
6.4.3 为Mathservice创建GAR文件 54
6.5 步骤五:向Web Service容器部署服务 55
6.6 一个简单的客户端程序 55
第7章 单一资源 60
7.1 对实现进行分离 60
7.1.1 Resource、Home和Servce 60
7.1.2 WSDL文件 62
7.1.3 Constants接口 62
7.1.4 Resource的实现 62
7.1.5 Service的实现 64
7.1.6 Resource home 67
7.2 对服务进行编译、部署和测试 68
第8章 复合资源 71
8.1 WS-Resource的工厂模式 71
8.2 在GT4中实现WS-Resource工厂模式 72
8.3 factory服务 76
8.4 instance服务 80
8.5 Resource 81
8.6 resource home 82
8.7 编译和部署 84
8.7.1 部署描述符 84
8.7.2 JNDI部署文件 85
8.7.3 编译和部署 88
8.8 一个简单的客户端程序 88
8.9 一个稍微复杂的客户端程序 91
8.9.1 用于创建资源的客户端程序 91
8.9.2 用于调用add操作的客户端程序 93
第9章 日志 96
9.1 Jakarta Commons Logging体系结构 96
9.2 给MathService添加日志 97
9.3 查看输出的日志信息 99
第10章 资源属性 102
10.1 资源属性详述 102
10.2 使用标准的WSRF端口类型 104
10.3 WS-Resource Properties端口类型 107
10.3.1 GetResourceProperty 108
10.3.2 GetMultipleResourceProperties 108
10.3.3 SetResourceProperties 108
10.3.4 QueryResourceProperties 108
10.4 访问资源属性的正确方法 108
10.4.1 WSDL文件 109
10.4.2 Java文件 110
10.4.3 Operation Providers 110
10.4.4 部署文件 111
10.4.5 编译和部署 111
10.4.6 客户端代码 112
10.5 一个更加精心准备的案例 116
10.5.1 WSDL文件 116
10.5.2 Resource的实现 118
10.5.3 部署文件 119
10.5.4 编译和部署 120
10.5.5 客户端代码 120
10.6 SimpleResourceProperty 125
10.7 命令行客户端 129
10.7.1 wsrf-get-property 129
10.7.2 wsrf-get-properties 130
10.7.3 wsrf-update-property 130
10.7.4 wsrf-insert-property 131
10.7.5 wsrf-delete-property 132
10.7.6 wsrf-query 132
参考文献 133
第11章 生命周期管理 134
11.1 即时销毁 134
11.2 调度销毁 139
11.2.1 WSDL文件 139
11.2.2 Resource的实现 140
11.2.3 部署 141
11.2.4 客户端程序 142
11.3 资源被销毁时执行响应操作 144
11.4 命令行客户端程序 144
11.4.1 wsrf-destroy 144
11.4.2 wsrf-set-termination-time 145
参考文献 146
第12章 持久资源 147
12.1 驻内资源VS持久资源 147
12.2 PersistentResource接口 148
12.2.1 load方法 148
12.2.2 store方法 149
12.2.3 清理工作 149
12.3 为MathService添加持久资源 149
12.3.1 交叉调用initialize方法 150
12.3.2 使用FilePersistenceHelper 151
12.3.3 store方法 153
12.3.4 load方法 154
12.3.5 清理工作 156
12.3.6 测试 156
12.4 资源缓存 159
参考文献 160
第13章 通知 161
13.1 什么是通知 161
13.2 WS-通知 162
13.2.1 WS-Topics 163
13.2.2 WS-BaseNotification 163
13.2.3 WS-BrokeredNotification 164
13.3 GT4中的通知 164
13.4 实现资源属性变化通知 165
13.4.1 WSDL文档 165
13.4.2 实现资源 167
13.4.3 实现服务 168
13.4.4 部署描述器 168
13.4.5 编译和发布 169
13.4.6 客户端代码 170
13.5 用ReflectionResourceProperty代替SimpleResourceProperty 174
13.6 定制通知消息 175
13.6.1 WSDL文档 176
13.6.2 实现资源 177
13.6.3 实现服务 178
13.6.4 编译和发布 178
13.6.5 监听通知 179
13.7 命令行客户端程序 180
13.7.1 wsn-subscribe 180
13.7.2 wsn-get-current-message 181
参考文献 182
第14章 实现自定义的操作提供者 183
14.1 RemoteLogging提供者 183
14.2 操作提供者的WSDL文档 184
14.3 操作提供者实现 185
14.4 把操作提供者插入MathService 187
14.4.1 WSDL文档 188
14.4.2 实现资源 189
14.4.3 部署描述器 190
14.5 测试 191
第三部分 GT4安全 195
第15章 安全基础概念 195
15.1 什么是安全通信 195
15.1.1 安全通信的三个基本要素 195
15.1.2 授权 196
15.2 密码术概述 197
15.2.1 基于密钥的算法 197
15.2.2 基于密钥的对称算法和非对称算法 199
15.3 公钥密码术 199
15.3.1 使用公钥密码术的安全通信 199
15.3.2 公钥体制的利弊 200
15.3.3 数字签名:公钥体制中的完整性 201
15.3.4 公钥体制中的认证 202
15.4 认证和认证授权 202
15.4.1 关于信任 202
15.4.2 X.509证书格式 203
15.4.3 CA层次 204
参考文献 205
第16章 GSI:网格安全基础设施 206
16.1 GSI简介 206
16.2 传输层和信息层的安全策略 206
16.3 认证 208
16.4 授权 209
16.4.1 服务器端授权 209
16.4.2 客户端授权 209
16.4.3 定制授权 210
16.5 委托和单点登录(代理证书) 210
16.5.1 问题 210
16.5.2 方案:代理证书 211
16.5.3 解决方案:委托和单点登录 211
16.5.4 细节 212
16.6 容器、服务和资源安全 214
参考文献 214
第17章 撰写一个安全的mathservice 215
17.1 一个安全服务 215
17.1.1 服务接口 215
17.1.2 服务实现 215
17.2 安全描述符 216
17.3 一个安全的客户端 217
17.4 测试 219
17.5 真的开始工作了吗 221
第18章 安全描述符 226
18.1 基本结构 226
18.2 公共选项 226
18.3 服务安全描述符 227
18.4 资源安全描述符 228
18.5 客户端安全描述符 228
18.6 容器安全描述符 229
18.6.1 指定容器的信任状 229
18.6.2 信息级安全选项 230
18.6.3 全局gridmap文件 231
第19章 认证 232
19.1 服务认证选项 232
19.1.1 默认认证方法的设置 232
19.1.2 为每个方法设定认证方法 233
19.1.3 设置保护级别 234
19.2 客户端认证选项 235
19.2.1 GSI安全会话 235
19.2.2 GSI安全消息 236
19.2.3 GSI传输 238
19.3 举例 239
19.3.1 案例一 239
19.3.2 案例二 244
第20章 授权 247
20.1 服务端授权 247
20.1.1 无授权 247
20.1.2 自主授权 247
20.1.3 身份授权 248
20.1.4 主机授权 248
20.1.5 SAML Callout授权 249
20.2 Gridmap授权 250
20.2.1 Gridmap文件 250
20.2.2 配置Gridmap授权 251
20.2.3 服务 251
20.2.4 测试gridmap 252
20.3 客户端授权 253
20.3.1 无授权 253
20.3.2 自主授权 254
20.3.3 身份授权 254
20.3.4 主机授权 255
20.4 自定义授权机制 255
第21章 资源级安全 258
21.1 资源安全描述符 258
21.2 采用编程的方式配置资源级安全 259
21.3 案例 260
21.3.1 WSDL文件 260
21.3.2 实现文件 261
21.3.3 部署描述符 262
21.3.4 运行和配置 263
21.3.5 测试服务 263
第22章 Run-as模型和委托 267
22.1 run-as模型 267
22.2 和委托相关的第一个案例 271
22.2.1 在客户端激活委托 271
22.2.2 在服务器端激活委托 272
22.2.3 编译和部署 273
22.2.4 编译和运行客户端 273
22.3 一个更加精细的和委托相关的案例 275
22.3.1 概述 275
22.3.2 PhysicsService 276
22.3.3 编译和部署 280
22.3.4 无委托的客户端 281
22.3.5 有委托的客户端 283
22.4 为资源委托信任状 285
22.4.1 安全描述符 285
22.4.2 WSDL文件 286
22.4.3 实现文件 287
22.4.4 编译和部署 289
22.4.5 测试 290
22.5 委托服务 292
参考文献 292
第四部分 FileBuy应用系统第23章 设计 295
23.1 资源代理总览 295
23.2 FileBuy系统概述 298
23.3 用例 299
23.3.1 用例1:发布文件 299
23.3.2 用例2:查找文件 301
23.3.3 用例3:购买文件 302
23.4 部署体系架构 304
23.5 安全考虑 305
23.5.1 认证 305
23.5.2 隐私和完整性 306
23.5.3 授权 306
23.6 总论 307
参考文献 308
第24章 实现 309
24.1 设置 310
24.1.1 在一台机器上运行FileBuy 311
24.2 用例1:发布文件 312
24.2.1 FilesForSale服务 312
24.2.2 AddFile客户端 318
24.2.3 测试 318
24.3 用例2:查找文件 319
24.3.1 文件代理服务 319
24.3.2 FindFile客户端 322
24.4 用例3:购买文件 324
24.4.1 FileBuyer服务:Purchase操作 324
24.4.2 FileBroker服务:purchase操作 325
24.4.3 FilesForSale服务:fillOrder操作 325
24.4.4 文件传输服务:transfer操作 325
24.4.5 FileBuyer服务:transfer操作 326
24.4.6 FileBroker服务:report操作 327
24.4.7 测试 327
总结 328
第五部分 附录 333
附录A Globus Toolkit 4工具包的安装 333
A.1 安装工具集前需要准备的一些软件 333
A.2 工具集的安装 334
A.3 对GT4进行CA安全配置 338
A.4 获取Host Certificate 341
A.5 设置容器证书 343
A.6 设置用户证书 344
A.7 Globus单机容器 346
附录B WSDL入门 347
B.1 WSDL文档的基本结构 347
B.2 端口类型 348
B.3 消息 349
B.4 在types标记中对请求和响应进行定义[yqq3] 350
B.5 资源属性的声明 351
B.6 小结 352
参考文献 354
附录C 命令行客户端 355
C.1 常用参数 355
C.2 客户端资源属性 355
C.3 客户端资源生命周期 359
C.4 客户端通知 360
C.5 Globus管理 362
C.6 用法举例 363
附录D 示例 365
D.1 服务接口Service Interfaces 365
D.2 服务 373
附录E globus-build-service脚本参考 376
E.1 参数 376
E.2 速记符 377
E.3 GAR文件 377
E.4 Build目录 378