《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > 基于JINI和JavaSpace技术的局域网消息系统

基于JINI和JavaSpace技术的局域网消息系统

2009-02-02
作者:谢文学

一、 JINI技术简介
分布式计算技术将被用来驾御网络的各种功能。在许多领域,由于Java技术的普遍采用,将会提供一种"编写一次,随处运行"的软件平台。网络的这种发展趋势——随处可用、简单、采用Java以及分布式计算技术——为Jini技术的产生奠定了基础。
几乎所有需要处理数字信息输入和输出的设备都有可能连接到使用Jini技术的社区,这不仅包括传统的计算机硬件和软件,而且还包括应用消费品,如个人数字助理(PDA)、数字相机、录象机、电视、DVD播放机、蜂窝电话和CD播放机等。使用该技术可以简化并扩展这些设备的网络能力。

n 发现(Discovery)
用于在网络上找到JINI社区并加入到其中,从而实现JINI社区的自发组建。
n 查找(Lookup)
服务提供者加入查找服务(向查找服务导出该服务的代理对象),客户从查找服务处下载服务代理对象。
n 租借(Leasing)
为了达到系统的稳定可靠,能够自恢复,自适应,采用租借机制:资源以一定的时间段来分配,如果要更长时间使用该资源,必须更新(renew)对该资源的租借。
n 远程事件(Remote Event)
远程事件提供了对于JINI服务和客户的一步通知机制。该机制使用了租借机制以使事件的生成避免网络的瞬态特性。
n 事务(Transaction)
JINI体系结构采用类似数据库中的事务操作。使得涉及多个实体的网络计算能够达到一致的安全状态。
   另外,JINI技术在很多地方使用到RMI作为通信手段,充分表现在服务代理对象的通信机制上。特别值得提出的是,JINI 2.0提出的JERI是对RMI的重要扩展。
二、JavaSpace技术简介
    JavaSpaces技术是基于JINI技术,为Java软件对象的相关组件的通信和存储而提供的JINI服务。JavaSpace是一个强大而有效的网络分布式计算的编程模型和工具。它使得分布式内存共享的编程模式成为可能:
n 进程不像传统方式一样直接通信
n 进程通过一个空间(由分布式系统共享的内存空间)交换对象
n 进程可以向空间写入(write)对象、取走(take)空间中的对象、从空间获得一份对象的拷贝(read)。
n 进程不能直接在空间中修改对象。(必须明确的取走该对象,修改后重新将该对象写入空间中。)
三、 利用JINI技术和JavaMail技术打造局域网消息系统
     JavaMail API是对传统的电子邮件系统的操作的纯Java语言封装。在许多成熟的J2EE应用中,JavaMail扮演着重要的角色。将JavaMail和JINI技术结合,可以加强该信息系统的实用性。由于本文主要介绍JINI技术和JavaSpace技术,因此不再对JavaMail细节进行详述。下面详述系统的设计。
1、 需求分析与设计:实现满足如下要求的局域网信息系统:
u 空间中可容纳多个拥有不同名称的工作组,代表局域网中的不同工作组。
u 每个房间(工作组)可容纳多个不同名称的工作人员,一个工作人员每一时刻只能在一个工作组中。
u 每个工作人员的名称在整个空间中唯一。尽管在实际生活中允许同名同姓。
u 工作人员可以向当前工作组提交信息,也可以及时获得其它同事的信息。
u 工作人员可以切换到不同的工作组。
u 工作人员可以获得当前空间中的工作组的列表。
u 工作人员可以及时获得当前工作组中同事的列表。并可察看同事的公开信息。
u 工作人员能够及时获得进入或者离开当前工作组的其他工作人员的信息。
u 如果某工作人员离开系统,应该最终自动从系统中消失。
u 能够以电子邮件的形式允许工作人员之间传递私人信息。
u 支持工作组的创建,察看,管理。
2、 系统模块化分

 

四、 JINI相关服务的启动
1、启动用于下载reggie-dl.jar, outrigger-dl.jar, norm-dl.jar的HTTP服务器(使用8080端口),以及本应用需要使用的MessageHandler_Stub.class和GroupHandler_Stub.class的HTTP服务器。JINI提供了用于类下载的HTTP服务器。例如:
java -jar C:\jini2\lib\tools.jar -dir C:\jini2\lib -verbose -port 8080
    2.启动JINI各项服务,包括查找服务,事务服务,JavaSpace服务等。可以从http://user-btmurphy.jini.org/下载方便启动的配置文件和脚本。使用该脚本可以大大简化JINI开发的环境配置问题。例如:
C:\jini2\example\scripts>wrun jeri-transient 将启动瞬态(即不会保持JINI会话状态)JINI服务。例如:JINI查找服务,JavaSpace服务,JINI事务服务。
1、 启动自己的应用
java-Djava.rmi.server.codebase=http://211.68.33.78:8085/-Djava.security.policy=../policy/policy.all  biti.cory.javaspace.chatgroup.GroupBuilder 将启动管理界面。注意安全策略文件的使用。
五、 部分重要代码分析
a) 获取JINI服务的代码
   public static Object getService(Class classname)
{  try
    {  look=new LookupDiscoveryManager(null,null,null);// 用以获得查找服务
    sdm=new ServiceDiscoveryManager(look,null);/*用以获得服务代理*/
}
catch(Exception e)
{  e.printStackTrace();
     }
   Class[] type = new Class[] {classname };
   ServiceTemplate template = new ServiceTemplate(null,type,null);
/*以类名匹配的服务代理模板*/
   try
{  ServiceItem serviceitem = sdm.lookup(template, null, Long.MAX_VALUE);
if ( serviceitem == null )
{  System.out.println("Can't find service");
            return null;
}
else
{  return serviceitem.service; // 服务代理
       }
} catch (Exception e)
{  return null;
    }
 } 
六、 总结与展望
通过实践JINI技术,切身的感觉到了JINI将给未来的消费类电子产品在软件开发方面带来的革命。特别是JINI技术的分布式内存共享、自组建、自适应等特性,对以后的家用小电器的软件开发有很好的实用性。特别是嵌入式系统中的主流——ARM系列处理器,已经开始对java提供指令级的支持,而且处理器时钟频率也大幅提高(Intel Xscale 系列已达400MHz)。因此,有理由相信,以JINI技术为核心的嵌入式信息家电的实用化在不久的将来定会得到普及。
七、  参考文献
1、Jini Seminar by Bill Venners JavaSpaces
http://www.artima.com/javaseminars/modules/JavaSpaces/
2、《Jini Example By Example》 by W. Keith Edwards and Tom Rodden 清华大学出版社 勤勇 福华 等译

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。