1. 首页
  2. 编程语言
  3. Java
  4. JINI 核心技术

JINI 核心技术

上传者: 2019-01-01 22:08:21上传 RAR文件 17.39MB 热度 39次
目 录 译者的话 序一 序二 前言 第一部分 基 础 第1章 一种新的计算模式 1 1.1 Jini的历史 1 1.1.1 Jini的设想 2 1.1.2 更广泛的应用 3 1.1.3 Jini的公开 4 1.1.4 许可证 4 1.1.5 共享源码许可 4 1.2 获取和安装Jini 5 1.2.1 安装Java 2 6 1.2.2 安装Jini 7 1.2.3 设置环境 9 1.2.4 启动Jini运行时的服务 10 1.2.5 通过GUI启动所需服务 11 1.2.6 用命令行方式启动所需服务 15 1.2.7 运行例子程序 19 1.3 参考读物和资源 20 第2章 分布式系统 21 2.1 网络中的焦点 21 2.1.1 传统网络系统 21 2.1.2 网络并不透明 22 2.2 新的分布式计算模型 25 2.2.1 需要强类型 26 2.2.2 远程多态性的例子 27 2.2.3 远程特性是接口的一部分而与实现 无关 28 2.3 参考读物 29 第3章 Jini模型 31 3.1 Jini设计的中心 31 3 .1.1 简明性 31 3.1.2 可靠性 31 3.1.3 可伸缩性 32 3.2 设备不可知论 33 3.3 Jini不是什么 33 3.3.1 Jini不是名字服务器 33 3.3.2 Jini不是JavaBeans 34 3.3.3 Jini不是企业JavaBeans 34 3.3.4 Jini不是RMI 34 3.3.5 Jini不是分布式操作系统 34 3.4 Jini的五个基本概念 34 3.4.1 发现 35 3.4.2 查找 37 3.4.3 租借 41 3.4.4 远程事件 45 3.4.5 事务 51 3.5 后面的内容 56 第4章 部署方案 57 4.1 成为Jini服务 57 4.2 如何为设备和服务使用Jini 58 4.3 在通用计算机上运行Jini 58 4.4 在支持Java的设备上运行Jini 60 4.4.1 Jini和Java子集 60 4.4.2 版本问题 61 4.5 Jini使用设备代理 61 4.6 基本Jini服务的需求 63 4.7 适于使用Jini的情况 63 4.8 不适于使用Jini的情况 64 4.9 参考读物 64 4.10 后面的内容 64 第二部分 Jini 的开发 第5章 Jini起步 65 5.1 运行Jini服务 65 5.2 按部署情况进行开发 66 5.2.1 运行多个HTTP服务器 67 5.2.2 警惕代码基问题 67 5.2.3 设置安全管理器 68 5.2.4 注意安全策略 68 5.2.5 注意CLASSPATH 68 5.2.6 考虑把可下载代码捆绑为 一个JAR文件 68 5.2.7 小结 69 5.3 第一个Jini程序:Hello, World 69 5.3.1 实现服务代理 72 5.3.2 “包装”应用程序 73 5.3.3 使用发现和查找 75 5.3.4 其他细节 76 5.3.5 使用服务模板来寻找服务 78 5.3.6 查找一个服务 79 5.3.7 编译并运行例子程序 80 5.4 扩展Hello, World程序的事件能力 84 5.4.1 编写远程事件接收器 86 5.4.2 通过Notify ( )请求事件 87 5.4.3 编译并运行程序 88 5.5 带有租借的Hello,World例子 91 5.5.1 一个简单的方法 92 5.5.2 编译和运行程序 97 5.6 使用可激活的后端进程 99 5.7 后面的内容 109 第6章 深入理解:发现 110 6.1 发现是什么 110 6.1.1 用组划分群体的名称空间 111 6.1.2 发现的分类 111 6.1.3 发现机制的要求 112 6.2 发现概述 112 6.2.1 IP组播基础 112 6.2.2 服务发起的发现 113 6.2.3 查找服务发起的发现 113 6.2.4 “直接”发现 114 6.3 在应用程序中使用发现 115 6.3.1 DiscoveryListener接口 115 6.3.2 DiscoveryEvent封装了发现信息 115 6.3.3 使用LookupDiscovery控制组播 发现 116 6.3.4 使用LookupLocator来控制单播 发现 123 6.4 发现协议的内部知识 127 6.4.1 组播请求协议 127 6.4.2 组播通告协议 129 6.4.3 单播发现协议 132 6.5 发现内部的其他问题 137 6.5.1 组播限制及原则 137 6.5.2 组播路由结构 137 6.5.3 安全性 138 6.5.4 主机和网络的需求 138 6.5.5 一些用于实现发现的接口 138 6.6 小结 139 6.7 后面的内容 139 第7章 使用属性描述服务 140 7.1 属性基础知识 140 7.1.1 属性是什么 140 7.1.2 属性的特殊语义 141 7.2 搜寻属性 143 7.3 谁修改属性 144 7.4 标准属性 144 7.5 创建新属性 145 7.6 属性和Bean 147 7.6.1 使用EntryBeans类把Entry映 射为Bean 147 7.6.2 如何找到项目Bean 148 7.6.3 项目Bean类 148 7.6.4 标准项目Bean 149 7.6.5 例子:容量Bean 149 7.6.6 另一个例子:使用GUI Bean 151 7.7 参考读物 153 第8章 深入理解:使用查找服务 154 8.1 查找概述 154 8.1.1 查找服务是Jini服务 154 8.1.2 服务如何使用查找 155 8.1.3 客户如何使用查找 155 8.2 发布服务代理:加入协议 156 8.2.1 JoinManager类 157 8.2.2 管理服务ID 159 8.3 在应用程序中使用JoinManager 160 8.3.1 编译并运行例子程序 165 8.3.2 通过JoinManager使用属性 165 8.3.3 限制修改服务控制的属性 166 8.4 客户如何使用查找服务 167 8.4.1 客户生命周期 168 8.4.2 搜寻服务 168 8.4.3 从查找服务请求事件 174 8.4.4 客户方其他问题 180 8.5 管理查找服务 182 8.5.1 服务管理的简要介绍 183 8.5.2 查找管理接口 183 8.5.3 管理Reggie查找服务的实现 184 8.6 查找服务的联合 184 8.7 例子:查找服务隧道 189 8.8 参考读物 195 8.9 小结 195 8.10 后面的内容 195 第9章 一个Jini查找服务浏览器 196 9.1 浏览器做什么 196 9.2 使用浏览器 197 9.3 创建管理构件 197 9.3.1 DestroyAdminPanel 198 9.3.2 StorageLocationAdminPanel 199 9.3.3 用于管理集合的ListBox 201 9.3.4 DiscoveryAdminPanel 204 9.3.5 JoinAdminPanel 207 9.3.6 AdminPanel 211 9.4 通用Jini类型的JList表元交付工具 212 9.4.1 LookupCellRenderer 213 9.4.2 ServiceCellRenderer 214 9.4.3 AttrCellRenderer 215 9.5 浏览器框架的核心 217 9.5.1 在列表中存储数据 217 9.5.2 使用发现 218 9.5.3 接收服务事件 220 9.5.4 处理列表事件 220 9.5.5 Browser类 221 9.6 建立并运行浏览器 228 9.7 后面的内容 229 第10章 深入理解:租借 230 10.1 分布式系统中的可靠性 230 10.1.1 自修复的需要 231 10.1.2 可升级能力的需要 231 10.1.3 使用租借解决问题 231 10.2 租借方案 231 10.3 租借的代价 234 10.4 创建租借使用方 234 10.4.1 租约接口 234 10.4.2 LeaseMap接口 238 10.5 用于租借使用者的高层API 239 10.6 租借服务 242 10.6.1 租借服务概述 243 10.6.2 远程租借API 243 10.6.3 用于远程租借的事件和接收器 247 10.6.4 租借服务的实现 248 10.6.5 编译并运行例子程序 257 10.7 租借的实际使用 259 10.7.1 谁处理租约续订 259 10.7.2 租借的危险 261 10.7.3 委托给外部JVM与委托给 内部类 261 10.8 小结 261 10.9 后面的内容 262 第11章 输出被租借的资源 263 11.1 租借接口及实现 263 11.2 Landlord范型 264 11.2.1 标识被租借资源 266 11.2.2 实现Landlord接口 266 11.3 一个例子 267 11.4 小结 280 11.5 后面的内容 280 第12章 良性的服务 281 12.1 服务的责任 281 12.2 服务管理 282 12.2.1 通过代管管理 282 12.2.2 管理接口 283 12.2.3 实现管理代管程序 283 12.2.4 例子:管理LeaseService 284 12.3 为服务提供用户界面 291 12.4 小结 297 12.5 后面的内容 297 第13章 一个完整的例子:打印服务 298 13.1 打印服务的要求 298 13.2 服务开发者的工具套件 299 13.2.1 服务的超类 299 13.2.2 管理的工具 303 13.3 定义打印服务API 306 13.4 与客户通信:事件和接收器 307 13.5 远程打印接口 308 13.6 打印服务代理 309 13.7 打印机管理API和用户界面 310 13.8 打印服务的内部实现 312 13.8.1 打印 318 13.8.2 持久数据的格式 319 13.8.3 实现打印服务管理 320 13.9 打印客户 323 13.10 编译并运行例子程序 326 13.11 进一步的工作 328 13.12 小结 328 13.13 后面的内容 329 第14章 深入理解:远程事件 330 14.1 通知的需要 330 14.2 Jini事件设计的中心 332 14.3 远程事件与本地事件的区别 332 14.3.1 无序传送 332 14.3.2 部分失败 333 14.3.3 延迟与计算 333 14.4 应用的语义 333 14.5 Jini事件编程模型 334 14.5.1 RemoteEvent类 334 14.5.2 RemoteEventListener接口 337 14.5.3 其他事件接口 338 14.6 例子:心跳事件 339 14.6.1 用于事件注册的工具套件 340 14.6.2 一个简单的事件生成器 344 14.6.3 测试HeartbeatGenerator的客户 程序 352 14.6.4 编译并运行Heartbeat例子 355 14.7 第三方事件代管程序 358 14.7.1 设计为可组合 358 14.7.2 实际应用组合 359 14.7.3 如何通过管道传送事件 359 14.7.4 建立管道 360 14.7.5 接收器角度的管道 361 14.7.6 通过代管程序租借 362 14.8 例子:事件邮箱 363 14.8.1 EventMailbox服务 364 14.8.2 邮箱客户 371 14.8.3 编译并运行例子程序 374 14.9 小结 377 14.10 后面的内容 378 第15章 JavaSpaces 379 15.1 什么是JavaSpaces 379 15.1.1 对象的文件系统 380 15.1.2 基于属性的搜寻 380 15.1.3 JavaSpaces的前身 380 15.2 获取并安装JavaSpaces 381 15.2.1 从Sun公司下载JavaSpaces 381 15.2.2 解包分发软件 382 15.2.3 检查分发软件 382 15.2.4 设置环境 383 15.2.5 启动运行时服务 383 15.3 暂态性和持久性JavaSpaces 389 15.4 JavaSpaces编程模型 389 15.4.1 事务的简要介绍 390 15.4.2 JavaSpaces API 390 15.5 例子:使用JavaSpaces记录持久性 事件 394 15.5.1 搜寻能力的设计 394 15.5.2 群体监视程序Watcher 397 15.5.3 记录事件数据的使用者程序 402 15.5.4 编译并运行程序 407 15.6 用JavaSpaces解决分布式计算的问题 409 15.7 参考读物 410 15.8 后面的内容 411 第16章 分布式事务 412 16.1 一致性与部分失败 412 16.2 “经典”事务模式 413 16.3 Jini中的事务 414 16.4 使用Jini事务编程 416 16.4.1 事务管理器 416 16.4.2 创建事务 416 16.4.3 事务接口 417 16.4.4 事务参与者 419 16.4.5 在JavaSpaces中使用事务 419 16.5 事务的其他内容及习惯用法 427 16.5.1 事务和可视化 427 16.5.2 事务的嵌套 427 16.5.3 事件和序列号 428 16.5.4 使用事务隐藏数据 429 16.6 小结 429 附 录 附录A RMI入门 431 附录B Java和Jini系统的常用属性 448 .1.1 简明性 31 3.1.2 可靠性 31 3.1.3 可伸缩性 32 3.2 设备不可知论 33 3.3 Jini不是什么 33 3.3.1 Jini不是名字服务器 33 3.3.2 Jini不是JavaBeans 34 3.3.3 Jini不是企业JavaBeans 34 3.3.4 Jini不是RMI 34 3.3.5 Jini不是分布式操作系统 34 3.4 Jini的五个基本概念 34 3.4.1 发现 35 3.4.2 查找 37 3.4.3 租借 41 3.4.4 远程事件 45 3.4.5 事务 51 3.5 后面的内容 56 第4章 部署方案 57 4.1 成为Jini服务 57 4.2 如何为设备和服务使用Jini 58 4.3 在通用计算机上运行Jini 58 4.4 在支持Java的设备上运行Jini 60 4.4.1 Jini和Java子集 60 4.4.2 版本问题 61 4.5 Jini使用设备代理 61 4.6 基本Jini服务的需求 63 4.7 适于使用Jini的情况 63 4.8 不适于使用Jini的情况 64 4.9 参考读物 64 4.10 后面的内容 64 第二部分 Jini 的开发 第5章 Jini起步 65 5.1 运行Jini服务 65 5.2 按部署情况进行开发 66 5.2.1 运行多个HTTP服务器 67 5.2.2 警惕代码基问题 67 5.2.3 设置安全管理器 68 5.2.4 注意安全策略 68 5.2.5 注意CLASSPATH 68 5.2.6 考虑把可下载代码捆绑为 一个JAR文件 68 5.2.7 小结 69 5.3 第一个Jini程序:Hello, World 69 5.3.1 实现服务代理 72 5.3.2 “包装”应用程序 73 5.3.3 使用发现和查找 75 5.3.4 其他细节 76 5.3.5 使用服务模板来寻找服务 78 5.3.6 查找一个服务 79 5.3.7 编译并运行例子程序 80 5.4 扩展Hello, World程序的事件能力 84 5.4.1 编写远程事件接收器 86 5.4.2 通过Notify ( )请求事件 87 5.4.3 编译并运行程序 88 5.5 带有租借的Hello,World例子 91 5.5.1 一个简单的方法 92 5.5.2 编译和运行程序 97 5.6 使用可激活的后端进程 99 5.7 后面的内容 109 第6章 深入理解:发现 110 6.1 发现是什么 110 6.1.1 用组划分群体的名称空间 111 6.1.2 发现的分类 111 6.1.3 发现机制的要求 112 6.2 发现概述 112 6.2.1 IP组播基础 112 6.2.2 服务发起的发现 113 6.2.3 查找服务发起的发现 113 6.2.4 “直接”发现 114 6.3 在应用程序中使用发现 115 6.3.1 DiscoveryListener接口 115 6.3.2 DiscoveryEvent封装了发现信息 115 6.3.3 使用LookupDiscovery控制组播 发现 116 6.3.4 使用LookupLocator来控制单播 发现 123 6.4 发现协议的内部知识 127 6.4.1 组播请求协议 127 6.4.2 组播通告协议 129 6.4.3 单播发现协议 132 6.5 发现内部的其他问题 137 6.5.1 组播限制及原则 137 6.5.2 组播路由结构 137 6.5.3 安全性 138 6.5.4 主机和网络的需求 138 6.5.5 一些用于实现发现的接口 138 6.6 小结 139 6.7 后面的内容 139 第7章 使用属性描述服务 140 7.1 属性基础知识 140 7.1.1 属性是什么 140 7.1.2 属性的特殊语义 141 7.2 搜寻属性 143 7.3 谁修改属性 144 7.4 标准属性 144 7.5 创建新属性 145 7.6 属性和Bean 147 7.6.1 使用EntryBeans类把Entry映 射为Bean 147 7.6.2 如何找到项目Bean 148 7.6.3 项目Bean类 148 7.6.4 标准项目Bean 149 7.6.5 例子:容量Bean 149 7.6.6 另一个例子:使用GUI Bean 151 7.7 参考读物 153 第8章 深入理解:使用查找服务 154 8.1 查找概述 154 8.1.1 查找服务是Jini服务 154 8.1.2 服务如何使用查找 155 8.1.3 客户如何使用查找 155 8.2 发布服务代理:加入协议 156 8.2.1 JoinManager类 157 8.2.2 管理服务ID 159 8.3 在应用程序中使用JoinManager 160 8.3.1 编译并运行例子程序 165 8.3.2 通过JoinManager使用属性 165 8.3.3 限制修改服务控制的属性 166 8.4 客户如何使用查找服务 167 8.4.1 客户生命周期 168 8.4.2 搜寻服务 168 8.4.3 从查找服务请求事件 174 8.4.4 客户方其他问题 180 8.5 管理查找服务 182 8.5.1 服务管理的简要介绍 183 8.5.2 查找管理接口 183 8.5.3 管理Reggie查找服务的实现 184 8.6 查找服务的联合 184 8.7 例子:查找服务隧道 189 8.8 参考读物 195 8.9 小结 195 8.10 后面的内容 195 第9章 一个Jini查找服务浏览器 196 9.1 浏览器做什么 196 9.2 使用浏览器 197 9.3 创建管理构件 197 9.3.1 DestroyAdminPanel 198 9.3.2 StorageLocationAdminPanel 199 9.3.3 用于管理集合的ListBox 201 9.3.4 DiscoveryAdminPanel 204 9.3.5 JoinAdminPanel 207 9.3.6 AdminPanel 211 9.4 通用Jini类型的JList表元交付工具 212 9.4.1 LookupCellRenderer 213 9.4.2 ServiceCellRenderer 214 9.4.3 AttrCellRenderer 215 9.5 浏览器框架的核心 217 9.5.1 在列表中存储数据 217 9.5.2 使用发现 218 9.5.3 接收服务事件 220 9.5.4 处理列表事件 220 9.5.5 Browser类 221 9.6 建立并运行浏览器 228 9.7 后面的内容 229 第10章 深入理解:租借 230 10.1 分布式系统中的可靠性 230 10.1.1 自修复的需要 231 10.1.2 可升级能力的需要 231 10.1.3 使用租借解决问题 231 10.2 租借方案 231 10.3 租借的代价 234 10.4 创建租借使用方 234 10.4.1 租约接口 234 10.4.2 LeaseMap接口 238 10.5 用于租借使用者的高层API 239 10.6 租借服务 242 10.6.1 租借服务概述 243 10.6.2 远程租借API 243 10.6.3 用于远程租借的事件和接收器 247 10.6.4 租借服务的实现 248 10.6.5 编译并运行例子程序 257 10.7 租借的实际使用 259 10.7.1 谁处理租约续订 259 10.7.2 租借的危险 261 10.7.3 委托给外部JVM与委托给 内部类 261 10.8 小结 261 10.9 后面的内容 262 第11章 输出被租借的资源 263 11.1 租借接口及实现 263 11.2 Landlord范型 264 11.2.1 标识被租借资源 266 11.2.2 实现Landlord接口 266 11.3 一个例子 267 11.4 小结 280 11.5 后面的内容 280 第12章 良性的服务 281 12.1 服务的责任 281 12.2 服务管理 282 12.2.1 通过代管管理 282 12.2.2 管理接口 283 12.2.3 实现管理代管程序 283 12.2.4 例子:管理LeaseService 284 12.3 为服务提供用户界面 291 12.4 小结 297 12.5 后面的内容 297 第13章 一个完整的例子:打印服务 298 13.1 打印服务的要求 298 13.2 服务开发者的工具套件 299 13.2.1 服务的超类 299 13.2.2 管理的工具 303 13.3 定义打印服务API 306 13.4 与客户通信:事件和接收器 307 13.5 远程打印接口 308 13.6 打印服务代理 309 13.7 打印机管理API和用户界面 310 13.8 打印服务的内部实现 312 13.8.1 打印 318 13.8.2 持久数据的格式 319 13.8.3 实现打印服务管理 320 13.9 打印客户 323 13.10 编译并运行例子程序 326 13.11 进一步的工作 328 13.12 小结 328 13.13 后面的内容 329 第14章 深入理解:远程事件 330 14.1 通知的需要 330 14.2 Jini事件设计的中心 332 14.3 远程事件与本地事件的区别 332 14.3.1 无序传送 332 14.3.2 部分失败 333 14.3.3 延迟与计算 333 14.4 应用的语义 333 14.5 Jini事件编程模型 334 14.5.1 RemoteEvent类 334 14.5.2 RemoteEventListener接口 337 14.5.3 其他事件接口 338 14.6 例子:心跳事件 339 14.6.1 用于事件注册的工具套件 340 14.6.2 一个简单的事件生成器 344 14.6.3 测试HeartbeatGenerator的客户 程序 352 14.6.4 编译并运行Heartbeat例子 355 14.7 第三方事件代管程序 358 14.7.1 设计为可组合 358 14.7.2 实际应用组合 359 14.7.3 如何通过管道传送事件 359 14.7.4 建立管道 360 14.7.5 接收器角度的管道 361 14.7.6 通过代管程序租借 362 14.8 例子:事件邮箱 363 14.8.1 EventMailbox服务 364 14.8.2 邮箱客户 371 14.8.3 编译并运行例子程序 374 14.9 小结 377 14.10 后面的内容 378 第15章 JavaSpaces 379 15.1 什么是JavaSpaces 379 15.1.1 对象的文件系统 380 15.1.2 基于属性的搜寻 380 15.1.3 JavaSpaces的前身 380 15.2 获取并安装JavaSpaces 381 15.2.1 从Sun公司下载JavaSpaces 381 15.2.2 解包分发软件 382 15.2.3 检查分发软件 382 15.2.4 设置环境 383 15.2.5 启动运行时服务 383 15.3 暂态性和持久性JavaSpaces 389 15.4 JavaSpaces编程模型 389 15.4.1 事务的简要介绍 390 15.4.2 JavaSpaces API 390 15.5 例子:使用JavaSpaces记录持久性 事件 394 15.5.1 搜寻能力的设计 394 15.5.2 群体监视程序Watcher 397 15.5.3 记录事件数据的使用者程序 402 15.5.4 编译并运行程序 407 15.6 用JavaSpaces解决分布式计算的问题 409 15.7 参考读物 410 15.8 后面的内容 411 第16章 分布式事务 412 16.1 一致性与部分失败 412 16.2 “经典”事务模式 413 16.3 Jini中的事务 414 16.4 使用Jini事务编程 416 16.4.1 事务管理器 416 16.4.2 创建事务 416 16.4.3 事务接口 417 16.4.4 事务参与者 419 16.4.5 在JavaSpaces中使用事务 419 16.5 事务的其他内容及习惯用法 427 16.5.1 事务和可视化 427 16.5.2 事务的嵌套 427 16.5.3 事件和序列号 428 16.5.4 使用事务隐藏数据 429 16.6 小结 429 附 录 附录A RMI入门 431 附录B Java和Jini系统的常用属性 448
用户评论