java rmi分布式系统应用探究

java rmi分布式系统应用探究

ID:6057923

大小:33.00 KB

页数:10页

时间:2018-01-01

java rmi分布式系统应用探究_第1页
java rmi分布式系统应用探究_第2页
java rmi分布式系统应用探究_第3页
java rmi分布式系统应用探究_第4页
java rmi分布式系统应用探究_第5页
资源描述:

《java rmi分布式系统应用探究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、JavaRMI分布式系统应用探究  摘要:RMI是开发Java网络分布式应用系统的一个重要框架,开发人员通过运用RMI框架将更易于分布式系统的开发。该文详细介绍了RMI的运行机制,并对运用RMI框架进行分布式系统的开发步骤进行了阐述,最后给出了RMI技术的具体应用实例和实现方法。关键词:RMI;Java;Stub;分布式中图分类号:TP393文献标识码:A文章编号:1009-3044(2014)01-0051-031概述由于单台计算机的计算能力有限,在实际的应用中,我们常常要将计算任务分成多个子任务

2、,将每个子任务放到网络中不同的计算机上进行计算,实现分布式并行计算,以加快计算速度。在分布式计算模型中不管采取何种方式,主要是将分部在不同计算机上的对象间发送的消息转换为字节序列,然后通过套接字建立连接并传输这些字节序列。在网络连接和传输消息时还要考虑出现的各种故障和安全问题以及对象垃圾收集机制等等问题。10在具体的分布式系统实现过程中,一种是采用基于消息方式实现各个节点间的通信。当系统要通信时就向外发送消息,消息可以是字节流、字节数组,其他系统接收到消息后则进行相应的业务处理。这种系统间通信的方式

3、,通常基于网络协议来实现,常用的实现系统间通信的协议有:TCP/IP和UDP/IP。另一种是采用基于远程调用方式实现系统间的通信。这种方式当系统间要通信时,可通过调用本地的一个Java接口的方法,透明地调用远程的Java实现。具体的细节则由Java或框架来完成,尽可能地使系统间的通信和系统内一样,让使用者感觉调用远程方法同调用本地方法一样。因为开发一个完善的分布式软件系统相当复杂,如果采用基于消息的方式实现分布式通信,相当麻烦。开发人员不仅仅要关注对数据的业务处理,还要关注很多纯技术细节。而基于远程

4、调用方式实现分布式通信的方法解放了开发人员的一些纯技术细节问题,使开发人员能够更专注于业务数据的处理。Java为我们开发分布式网络应用提供了比较完善的远程方法框架,那就是JavaRMI(RemoteMethodInvocation,远程方法调用)。通过RMI,可以很方便地让Java程序调用网络中其他计算机上的Java方法。2RMI系统运行机制RMI是Java用于实现透明远程调用的重要机制。在远程调用中,客户端仅有服务器端提供的接口。客户端通过此接口实现对远程服务器端的方法调用。RMI服务器端通过启动

5、RMIRegistry10(RMIRegistry是运行在服务器上的一个后台进程,且必须在服务进程启动之前启动)在一个端口上监听对外提供的接口,其实现实例以字符串的方式绑定到RMI注册对象上。RMI客户端程序采用命名服务机制通过注册表获取远程对象的存根stub。当要调用远程方法时,通过此stub将被访问的远程对象的名字、被调用的方法描述和相关的参数封装成一个对象,序列化成流后传输到RMI服务器端。RMI服务器端skeleton接收到客户端的请求对象后,解析其中的对象字符串、方法和参数,通过对象字符串

6、和访问的方法名称来反射获取到方法实例对象,传入参数完成对服务器端对象实例的调用。然后获得方法调用产生的返回值或者异常,并对其进行序列化然后返回给客户端。客户端的stub接收到服务器端skeleton发送过来的返回值或者异常的序列化字节流后,对其进行反序列化,就得到调用远程方法的返回结果。RMI的具体运行机制如图1。图1RMI运行机制3RMI技术应用实例开发步骤3.1创建远程接口10RMI中要求远程对象所属的类实现一个远程接口,远程对象必须通过远程接口声明服务。在远程接口中声明可以被客户程序访问的远程

7、方法。此接口必须要直接或间接继承java.rmi.Remote接口。由于远程方法调用依赖于网络通信,而网络通信是不可靠的,一旦服务器端或客户端有一方断开连接,或者网络出现故障,此次通信就会失败。所以在接口中的所有方法需要声明抛出java.rmi.RemoteException异常。当远程方法调用出现网络通信异常时,RMI框架抛出RemoteException异常,客户端捕获这种异常,并进行相应的处理。实例代码如下:importjava.rmi.*;publicinterfaceAccountexte

8、ndsRemote{publicintadd(inti,intj)throwsRemoteException;}3.2实现远程接口10远程接口中定义的远程方法的具体实现都在远程接口的实现类中,远程接口的实现类中也可以定义一些本地方法,这些本地方法不需要在远程接口中声明,也无需抛出RemoteException异常,本地方法只能被本地调用,不能被远程调用。远程接口的实现类需要继承java.rmi.server.UnicastRemoteObject类。因为RMI框架中关

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。