📄 index.txt
字号:
目 录译者的话序一序二前言第一部分 基 础第1章 一种新的计算模式 11.1 Jini的历史 11.1.1 Jini的设想 21.1.2 更广泛的应用 31.1.3 Jini的公开 41.1.4 许可证 41.1.5 共享源码许可 41.2 获取和安装Jini 51.2.1 安装Java 2 61.2.2 安装Jini 71.2.3 设置环境 91.2.4 启动Jini运行时的服务 101.2.5 通过GUI启动所需服务 111.2.6 用命令行方式启动所需服务 151.2.7 运行例子程序 191.3 参考读物和资源 20第2章 分布式系统 212.1 网络中的焦点 212.1.1 传统网络系统 212.1.2 网络并不透明 222.2 新的分布式计算模型 252.2.1 需要强类型 262.2.2 远程多态性的例子 272.2.3 远程特性是接口的一部分而与实现无关 282.3 参考读物 29第3章 Jini模型 313.1 Jini设计的中心 313.1.1 简明性 313.1.2 可靠性 313.1.3 可伸缩性 323.2 设备不可知论 333.3 Jini不是什么 333.3.1 Jini不是名字服务器 333.3.2 Jini不是JavaBeans 343.3.3 Jini不是企业JavaBeans 343.3.4 Jini不是RMI 343.3.5 Jini不是分布式操作系统 343.4 Jini的五个基本概念 343.4.1 发现 353.4.2 查找 373.4.3 租借 413.4.4 远程事件 453.4.5 事务 513.5 后面的内容 56第4章 部署方案 574.1 成为Jini服务 574.2 如何为设备和服务使用Jini 584.3 在通用计算机上运行Jini 584.4 在支持Java的设备上运行Jini 604.4.1 Jini和Java子集 604.4.2 版本问题 614.5 Jini使用设备代理 614.6 基本Jini服务的需求 634.7 适于使用Jini的情况 634.8 不适于使用Jini的情况 644.9 参考读物 644.10 后面的内容 64第二部分 Jini 的开发第5章 Jini起步 655.1 运行Jini服务 655.2 按部署情况进行开发 665.2.1 运行多个HTTP服务器 675.2.2 警惕代码基问题 675.2.3 设置安全管理器 685.2.4 注意安全策略 685.2.5 注意CLASSPATH 685.2.6 考虑把可下载代码捆绑为一个JAR文件 685.2.7 小结 695.3 第一个Jini程序:Hello, World 695.3.1 实现服务代理 725.3.2 “包装”应用程序 735.3.3 使用发现和查找 755.3.4 其他细节 765.3.5 使用服务模板来寻找服务 785.3.6 查找一个服务 795.3.7 编译并运行例子程序 805.4 扩展Hello, World程序的事件能力 845.4.1 编写远程事件接收器 865.4.2 通过Notify ( )请求事件 875.4.3 编译并运行程序 885.5 带有租借的Hello,World例子 915.5.1 一个简单的方法 925.5.2 编译和运行程序 975.6 使用可激活的后端进程 995.7 后面的内容 109第6章 深入理解:发现 1106.1 发现是什么 1106.1.1 用组划分群体的名称空间 1116.1.2 发现的分类 1116.1.3 发现机制的要求 1126.2 发现概述 1126.2.1 IP组播基础 1126.2.2 服务发起的发现 1136.2.3 查找服务发起的发现 1136.2.4 “直接”发现 1146.3 在应用程序中使用发现 1156.3.1 DiscoveryListener接口 1156.3.2 DiscoveryEvent封装了发现信息 1156.3.3 使用LookupDiscovery控制组播发现 1166.3.4 使用LookupLocator来控制单播发现 1236.4 发现协议的内部知识 1276.4.1 组播请求协议 1276.4.2 组播通告协议 1296.4.3 单播发现协议 1326.5 发现内部的其他问题 1376.5.1 组播限制及原则 1376.5.2 组播路由结构 1376.5.3 安全性 1386.5.4 主机和网络的需求 1386.5.5 一些用于实现发现的接口 1386.6 小结 1396.7 后面的内容 139第7章 使用属性描述服务 1407.1 属性基础知识 1407.1.1 属性是什么 1407.1.2 属性的特殊语义 1417.2 搜寻属性 1437.3 谁修改属性 1447.4 标准属性 1447.5 创建新属性 1457.6 属性和Bean 1477.6.1 使用EntryBeans类把Entry映射为Bean 1477.6.2 如何找到项目Bean 1487.6.3 项目Bean类 1487.6.4 标准项目Bean 1497.6.5 例子:容量Bean 1497.6.6 另一个例子:使用GUI Bean 1517.7 参考读物 153第8章 深入理解:使用查找服务 1548.1 查找概述 1548.1.1 查找服务是Jini服务 1548.1.2 服务如何使用查找 1558.1.3 客户如何使用查找 1558.2 发布服务代理:加入协议 1568.2.1 JoinManager类 1578.2.2 管理服务ID 1598.3 在应用程序中使用JoinManager 1608.3.1 编译并运行例子程序 1658.3.2 通过JoinManager使用属性 1658.3.3 限制修改服务控制的属性 1668.4 客户如何使用查找服务 1678.4.1 客户生命周期 1688.4.2 搜寻服务 1688.4.3 从查找服务请求事件 1748.4.4 客户方其他问题 1808.5 管理查找服务 1828.5.1 服务管理的简要介绍 1838.5.2 查找管理接口 1838.5.3 管理Reggie查找服务的实现 1848.6 查找服务的联合 1848.7 例子:查找服务隧道 1898.8 参考读物 1958.9 小结 1958.10 后面的内容 195第9章 一个Jini查找服务浏览器 1969.1 浏览器做什么 1969.2 使用浏览器 1979.3 创建管理构件 1979.3.1 DestroyAdminPanel 1989.3.2 StorageLocationAdminPanel 1999.3.3 用于管理集合的ListBox 2019.3.4 DiscoveryAdminPanel 2049.3.5 JoinAdminPanel 2079.3.6 AdminPanel 2119.4 通用Jini类型的JList表元交付工具 2129.4.1 LookupCellRenderer 2139.4.2 ServiceCellRenderer 2149.4.3 AttrCellRenderer 2159.5 浏览器框架的核心 2179.5.1 在列表中存储数据 2179.5.2 使用发现 2189.5.3 接收服务事件 2209.5.4 处理列表事件 2209.5.5 Browser类 2219.6 建立并运行浏览器 2289.7 后面的内容 229第10章 深入理解:租借 23010.1 分布式系统中的可靠性 23010.1.1 自修复的需要 23110.1.2 可升级能力的需要 23110.1.3 使用租借解决问题 23110.2 租借方案 23110.3 租借的代价 23410.4 创建租借使用方 23410.4.1 租约接口 23410.4.2 LeaseMap接口 23810.5 用于租借使用者的高层API 23910.6 租借服务 24210.6.1 租借服务概述 24310.6.2 远程租借API 24310.6.3 用于远程租借的事件和接收器 24710.6.4 租借服务的实现 24810.6.5 编译并运行例子程序 25710.7 租借的实际使用 25910.7.1 谁处理租约续订 25910.7.2 租借的危险 26110.7.3 委托给外部JVM与委托给内部类 26110.8 小结 26110.9 后面的内容 262第11章 输出被租借的资源 26311.1 租借接口及实现 26311.2 Landlord范型 26411.2.1 标识被租借资源 26611.2.2 实现Landlord接口 26611.3 一个例子 26711.4 小结 28011.5 后面的内容 280第12章 良性的服务 28112.1 服务的责任 28112.2 服务管理 28212.2.1 通过代管管理 28212.2.2 管理接口 28312.2.3 实现管理代管程序 28312.2.4 例子:管理LeaseService 28412.3 为服务提供用户界面 29112.4 小结 29712.5 后面的内容 297第13章 一个完整的例子:打印服务 29813.1 打印服务的要求 29813.2 服务开发者的工具套件 29913.2.1 服务的超类 29913.2.2 管理的工具 30313.3 定义打印服务API 30613.4 与客户通信:事件和接收器 30713.5 远程打印接口 30813.6 打印服务代理 30913.7 打印机管理API和用户界面 31013.8 打印服务的内部实现 31213.8.1 打印 31813.8.2 持久数据的格式 31913.8.3 实现打印服务管理 32013.9 打印客户 32313.10 编译并运行例子程序 32613.11 进一步的工作 32813.12 小结 32813.13 后面的内容 329第14章 深入理解:远程事件 33014.1 通知的需要 33014.2 Jini事件设计的中心 33214.3 远程事件与本地事件的区别 33214.3.1 无序传送 33214.3.2 部分失败 33314.3.3 延迟与计算 33314.4 应用的语义 33314.5 Jini事件编程模型 33414.5.1 RemoteEvent类 33414.5.2 RemoteEventListener接口 33714.5.3 其他事件接口 33814.6 例子:心跳事件 33914.6.1 用于事件注册的工具套件 34014.6.2 一个简单的事件生成器 34414.6.3 测试HeartbeatGenerator的客户程序 35214.6.4 编译并运行Heartbeat例子 35514.7 第三方事件代管程序 35814.7.1 设计为可组合 35814.7.2 实际应用组合 35914.7.3 如何通过管道传送事件 35914.7.4 建立管道 36014.7.5 接收器角度的管道 36114.7.6 通过代管程序租借 36214.8 例子:事件邮箱 36314.8.1 EventMailbox服务 36414.8.2 邮箱客户 37114.8.3 编译并运行例子程序 37414.9 小结 37714.10 后面的内容 378第15章 JavaSpaces 37915.1 什么是JavaSpaces 37915.1.1 对象的文件系统 38015.1.2 基于属性的搜寻 38015.1.3 JavaSpaces的前身 38015.2 获取并安装JavaSpaces 38115.2.1 从Sun公司下载JavaSpaces 38115.2.2 解包分发软件 38215.2.3 检查分发软件 38215.2.4 设置环境 38315.2.5 启动运行时服务 38315.3 暂态性和持久性JavaSpaces 38915.4 JavaSpaces编程模型 38915.4.1 事务的简要介绍 39015.4.2 JavaSpaces API 39015.5 例子:使用JavaSpaces记录持久性事件 39415.5.1 搜寻能力的设计 39415.5.2 群体监视程序Watcher 39715.5.3 记录事件数据的使用者程序 40215.5.4 编译并运行程序 40715.6 用JavaSpaces解决分布式计算的问题 40915.7 参考读物 41015.8 后面的内容 411第16章 分布式事务 41216.1 一致性与部分失败 41216.2 “经典”事务模式 41316.3 Jini中的事务 41416.4 使用Jini事务编程 41616.4.1 事务管理器 41616.4.2 创建事务 41616.4.3 事务接口 41716.4.4 事务参与者 41916.4.5 在JavaSpaces中使用事务 41916.5 事务的其他内容及习惯用法 42716.5.1 事务和可视化 42716.5.2 事务的嵌套 42716.5.3 事件和序列号 42816.5.4 使用事务隐藏数据 42916.6 小结 429附 录附录A RMI入门 431附录B Java和Jini系统的常用属性 448
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -