Jini代表着分布式计算技术的深刻革命,其目的是通过对分布式资源的高效处理,将网络逐渐变成一个方便灵活且易于管理的工具, 这样用户或任何其它可计算实体在Jini系统中都能够很方便地发现对其有用的资源,从而完成各种分布式计算。本文第一部分介绍了Jini的基本概念和实现 原理,在本文的第二部分作者将介绍借助Jini Technology Starter Kit v2.0如何开发基于Jini的软件系统。
Jini代表着分 布式计算技术的深刻革命,其目的是通过对分布式资源的高效处理,将网络逐渐变成一个方便灵活且易于管理的工具,这样用户或任何其它可计算实体在Jini系 统中都能够很方便地发现对其有用的资源,从而完成各种分布式计算。本文第一部分介绍了Jini的基本概念和实现原理,在本文的第二部分作者将介绍借助 Jini Technology Starter Kit v2.0如何开发基于Jini的软件系统。
从 计算机诞生那天起,在如何更好地将计算机互连起来以便充分利用各种资源这一问题上,人们从来没有停止过辛勤探索的脚步。从大型机到PC机,从局域网到广域 网再到后来的Internet,整个世界似乎经历了一次网络化的大洗礼。现在,随着嵌入式设备的大量使用,无所不在的网络和无所不在的计算 (everything connecting, everywhere computing)又在逐渐将人类带入一个崭新的信息社会。
一 切都非常令人兴奋,并且随之而来各种电子设备的互联也将成为一种必然的趋势。今后,与人们生活息息相关的各种家电设备都能够联成网络并接入 Internet,人们可以在任何时间、任何地点统一控制各种家电,让它们协同工作,从而将极大地影响和改变目前的生活方式。比如,在将电视机接入 Internet后,你就可以通过电视机来浏览网页,获取所需的信息;又比如,你可以在下班前一小时,通过Internet控制家里的电饭煲和微波炉开始 工作,这样当你到家时晚饭已经做好了;再比如……
可问题是现在联网还是太复杂了,无论是要把一台PC机连接到网 络上,或者是使用联网的打印机,都是一件非常困难的事情,至少对一般的消费者来讲是这样。而类似安装驱动程序、修改配置文件等"专业性"的工作,更加只有 那些经过严格训练并且经验丰富的系统管理员才有可能胜任。另一方面,目前的网络还相当脆弱,并且很不灵活,仅仅只对某些关键部件稍加改动很可能就会造成网 络的一片混乱。而像添加磁盘驱动器这类看似非常简单的事情,管理员也必须先打开机箱,设置跳线,并解决一系列复杂的软件设置问题。
解 决这个问题的办法是提出一种全新的分布式计算概念,使得任何设备无需预先配置和安装,便可在任何时间任何地点加入网络,并且能和网络中已有的各种软硬件一 起协调工作完成计算。正是在这一思想的指引下,产生了Jini这一新的分布式计算平台,Jini的设计理念就是要让用户在使用计算机周边产品或嵌入式电器 时,能像使用电话一样方便。 从消费者的角度看,如果你想安装电话,只要申请到一个电话号码,再去买个电话机,然后把插头往墙壁上的插座一插,拿起话筒听到嗡嗡声后就可以正常使用了, 不需要对电话进行任何配置。Jini的目标正是要在可靠性、可配置性和可管理性等方面达到类似于电话系统那样的水平,使得任何硬件或者软件只要进入网络这 一大环境,就能够立即使用所有可用的服务,而不需要那么多烦琐的配置过程。
|
Jini 是以Java技术为核心的分布式系统,它通过使用一个简易的"即插即用"模型,能够随时改变硬件或者软件的配置,从而提供了一个支持快速配置的分布式计算 环境。Jini的迷人之处在于它能够使各种数字设备无需配置、安装或者人工干预,就能够在一个临时的称为服务联盟(federations of services)的设备集合中共同工作。联盟中的任何设备无论大小都可以自行管理,共同组成一个服务网络,联盟中的每一个成员都可以为其它成员提供资源 或服务,同时又可以从其它成员那里获取自己所需的资源和服务,Jini提供一套完善的机制使得硬件设备或者软件组件能够随时加入或者退出联盟。
Jini 是一个主动的、响应式的分布式基础结构,它提供了在分布式环境中进行服务的建立、查找、通讯和调用的一整套机制。Jini技术被设计成可以运用在任何有能 力连入网络的器件上,而不论该器件运行什么软件或运行在哪种硬件设备之上。Jini技术是以网络器件中的一个构件的面貌出现的,它为器件如何连入网络、共 享信息和与网络进行互操作建立了一套规则,而同时又保持了对用户的完全透明。Jini本身与平台无关,采用它的器件不再受到所用软件、处理器、设备驱动 器,或传统网络协议的制约,其唯一要求只是一个能够运行Java字节码的虚拟机,如图1所示。
提出Jini这一体系结构的目标是将成组的硬件设备和软件组件联合成一个单一的、动态的分布式系统,联合后的网络系统更加易于管理和使用,同时在保持单机的灵活性、统一响应和控制的情况下,还能够支持由系统提供的共享能力。Jini这一体系结构中有几个非常重要概念:
|
一个完整的Jini系统由基础设施(Infrastructure)、编程模型(Programming Model)、服务(Services)三个部分组成,其体系结构如图2所示。
基础设施用来定义基于Jini的硬件设备和软件组件如何连接并注册到网络,它包括以下四个组成部分:
Jini 基础设施负责实现添加、删除、定位和访问服务的相关机制,它通常驻留在网络中的三个地方:在查找服务中;在服务提供者中;或者在客户中。Jini基础设施 的核心是Lookup、Discovery和Join三条协议,它们使得基于Jini的任何服务都可以随时加入或者退出联盟,并且在加入联盟时无需进行安 装和配置,从而达到了即插即用的效果。
查找服务(Lookup Service) 是Jini体系结构中的基本组成部分,它负责在分布式系统中提供对服务的中央注册机制。一旦进入Jini的世界,如果想找到所需的服务就必须通过查找服 务,此外,查找服务还是为管理员和用户提供各种访问接口的基础。在一定程度上你可以将查找服务看成是网络中所有服务的公告牌,它维护着各个服务所提供的功 能接口与实现该服务的对象集间的映射关系。Jini中的客户通过使用查找服务在分布式网络中查找和调用所需的服务,而查找服务中的对象本身可以包含其它查 找服务,从而构成层次式的查找服务。
当硬件设备或者应用程序进入网络时,它所提供的服务如何被Jini发现并接 纳,并进一步成为整个Jini分布式系统中的某项服务,需要经过两个必不可少的重要步骤。第一步是找到系统中的查找服务,这个过程称为发现 (Discovery),所用到的协议是发现协议。第二步是将自己注册到查找服务中,这个过程称为加入(Join),描述这个过程的协议是Join协议。 一个Jini服务只有在成功完成了这两个步骤之后,才能正式成为联盟中的一员,并开始向外界提供相应的服务。
在Jini 这一分布式计算环境中,服务提供者所提供的服务既可能是硬件也可能是软件。当某一服务提供者需要加入到Jini系统中时,它首先必须找到网络中的查找服 务,于是它在局域网中进行广播,请求加入到查找服务中。附近的查找服务在收到相应的请求后负责识别并接纳该服务,整个过程称之为发现,如图3所示。需要注 意的是,服务提供者必须包含用于通讯的服务对象(service object)和描述该服务特点的服务属性(service attributes)。
当查找服务找到之后,服务提供者将与查找服务直接进行通讯,把自己的服务对象和服务属性注册到查找服务中,换句话说就是把服务对象和服务属性发送到查找服务中去。这个过程称为加入,如图4所示。
一旦服务被成功地加入到查找服务中后,如果Jini系统中的客户需要使用该服务,它可以根据服务的类型或者属性向查找服务查询合适的服务,查找服务负责把查询后的结果返回给客户,当客户决定使用该服务时,查找服务还会将该服务对象的拷贝发送给客户,如图5所示。
Jini 客户从查找服务那里获得的服务对象是一个Java接口(Interface),其中包括用来调用服务的方法名称和参数,以及其它一些描述信息。Jini客 户通过获得的服务对象与服务提供者进行直接联系,获得相应的服务。服务对象负责处理客户与服务提供者之间的通信,从而向用户隐藏了服务的具体实现细节,如 图6所示。
Jini是一个分布式的计算环境,其编程模型自然也是分布式的,编程模型在Jini的体系结构中占有非常重要的地位,其基础设施正是借助这一编程模型有机地结合在了一起。Jini的编程模型主要包括下面几个方面:
Jini的基础设施和编程模式使得服务能够在分布式环境中被注册和发现,并能够向用户宣布自己的存在。服务是Jini体系结构中一个非常重要的概念,它可以用来表示组织在一起形成Jini联盟的各个实体,这里所指的实体可以是硬件、软件或者软硬件的结合。
Jini 中的每个服务都有一个接口描述,该接口定义了客户可以向这个服务请求的所有操作,并且反映了服务的类型。Jini中的服务是可以聚合的,即允许一个服务由 多个子服务组合而成。整个Jini体系结构中最重要的一个服务是查找服务,它是Jini基础设施的一个子组件,其它作为Jini体系结构组成部分并实现为 Jini服务的对象包括:
|
Jini 目前还处于研发的早期阶段,因此迄今为止还没有哪个Jini实现系统声称它可以真正投入实际使用,自然也就没有完全遵循Jini规范的服务或者设备出现。 尽管如此,Jini试图去解决的问题对许多软硬件厂商来讲已经非常急切了,因此Sun公司给出了一个Jini的参考实现系统:Jini Technology Starter Kit,它可以从 http://wwws.sun.com/software/jini/下载到,目前的最新版本是2.0。
从Sun 公司的网站下载到Jini Technology Starter Kit Version 2.0的源码包jini-2_0-src.zip后,将其解压缩到d: jini2_0目录下。由于Jini建立在一系列其他服务的基础之上,因此在正式启动Jini之前还必须先对这些服务进行配置,Jini Technology Starter Kit开发包中集成了一些支持Jini运行所必需的基本服务:
Jini Technology Starter Kit v2.0在它的tools.jar包中自带了一个HTTP服务器,你可以在d:jini2_0script目录下创建一个内容如下的批处理文件来启动它:
清单1:start-httpd.bat |
缺省情况下,HTTP服务器将 运行在8080端口,但如果此时系统中已经有一个Web服务器运行在8080端口了,那么可以用"-port"参数把Jini的HTTP服务器指定到另外 的端口。参数"-dir"可以用来设置HTTP服务器的根目录,在上面的例子中将其设置为Jini的lib目录,这样做的好处是Jini的核心代码可以被 直接下载。最后那个参数"-verbose"是用于调试的,它要求HTTP服务器显示所有来自客户端的请求信息以及这些请求的来源。
RMI 激活守护进程rmid是由JDK所提供的,它必须在可激活对象所在的每一台主机上运行,其中包括Jini查找服务、事务管理器和JavaSpace。如果 你已经成功地配置好了JDK,那么可以在d:jini2_0script目录下创建一个内容如下的批处理文件来启动它:
清单2:start-rmid.bat |
Jini Technology Starter Kit v2.0中查找服务的实现是Reggie,它位于reggie.jar包中,启动这个服务比启动其他服务要稍微复杂一些。首先在d:jini2_0 config目录下为Reggie创建一个内容如下的安全策略文件:
清单3:all.policy |
接着在d:jini2_0config目录下为Reggie创建一个内容如下的启动配置文件:
清单4:start-reggie.config |
最后再在d:jini2_0config目录下为Reggie创建一个内容如下的配置文件:
清单5:reggie.config |
为了简化Reggie查找服务的启动,可以在d:jini2_0script目录下创建一个内容如下的批处理文件:
清单6:start-reggie.bat |
这样在需要启动HTTP服务器、RMI激活守护进程或者Reggie查找服务时,只用在命令行方式下依次执行下面的命令就可以了:
D:jini2_0> start scriptstart-httpd |
在Jini的世界中,所有可用 的资源都被看成是服务,而对服务的查询和检索则是最频繁的操作之一,为此Jini Technology Starter Kit v2.0专用提供了一个实用工具Browser,利用它可以查询当前Jini网络中的所有服务。为了简化Browser的启动,可以在d: jini2_0script目录下创建一个内容如下的批处理文件:
清单7:start-browser.bat |
现在只要在命令行方式下依次执行下面的命令就可以启动Browser了:
D:jini2_0> start scriptstart-browser |
正如前面介绍过的,查找服务是Jini中的一项特殊服务,因而此时如果Reggie查找服务已经正常启动了,那么可以在Browser中查询到它,如图7所示。为了监视Jini查找服务的运行状态,你可以让Browser一直运行下去。
|
Jini 在很大程度上改变了人们对网络的看法,它以Java技术为依托,把网络上的各种硬件设备和软件组件联合成单一的、动态的分布式系统,从而使网络更易于操纵 和管理,并具有更高的可配置性。Jini的目标是将所有可以联网的软硬件资源组织成一个完全自发的网络,使网络中不再需要手工的设备配制、驱动安装等专业 性较强的工作。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/374079/viewspace-130160/ ,如需转载,请注明出处,否则将追究法律责任。