分布式计算机系统论文J2EE RMI技术.docx
- 文档编号:6059565
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:11
- 大小:425.10KB
分布式计算机系统论文J2EE RMI技术.docx
《分布式计算机系统论文J2EE RMI技术.docx》由会员分享,可在线阅读,更多相关《分布式计算机系统论文J2EE RMI技术.docx(11页珍藏版)》请在冰点文库上搜索。
分布式计算机系统论文J2EERMI技术
基于J2EE技术的分布式框架简介
摘要:
本文主要介绍基于J2EE技术的分布式框架RMI。
RMI是Java的一组拥护开发分布式应用程序的API。
RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(JavaRemoteMethodProtocol),支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用,这种机制给分布式系统地实现带来了极大的方便。
本文最后会给出基于JavaRMI的编程步骤。
关键字:
J2EE;分布式;RMI
一、
引言
在当今的互联世界中,越来越多的企业应用程序跨多个服务器分布和运行、连接到远程数据源和WebService,并可通过Internet访问。
分布式计算功能强大,但也并非没有面临挑战。
网络在本质上并不可靠,同本地的进程间通信相比,与远程服务器的通信速度较慢。
另外,同时在多台计算机上运行一个程序可能会导致许多并发和同步问题。
1.1传统的网络应用模式
随着Internet以及Web技术和分布式对象技术的广泛使用,网络应用的规模越来越大、计算环境也越来越复杂,应用呈现出多层次、多样化的特点。
传统应用系统的C/S模式的弊端日益凸显,已经不能适应企业业务不断发展的需求。
C/S模式的弊端主要表现于一下:
A)可移植性不好。
C/S模式要求所有的客户端安装规定的程序,才能进行数据的访问和处理,这就意味着为了获得系统的跨平台性,必须同时为windows、linux等市面上的操作系统各提供一个软件版本,这会耗费大量的开发时间和维护成本。
B)开发维护成本高。
C/S系统要求同样功能的客户端程序提供不同系统的支持,这无论是对于开发,还是维护,都是巨大的成本。
C)安全性差。
C/S结构的软件必须在各地安装多个服务器,并在多个服务器之间进行数据同步。
如此一来,每个数据点上的数据安全都影响了整个应用的数据安全。
软件存在被破解的可能性。
1.2分布式应用系统
在C/S模式弊端凸显的时候,产生了分布式应用系统开发模型。
分布式应用系统与传统的C/S模式相比有着极大的优势,主要体现在:
A)可伸缩性好。
B)可管理性强。
C)安全性高
D)软件复用性好。
E)开发周期短等诸多优点。
以上优点在Internet/Intranet环境下,显得更加突出。
二、
相关技术简介
2.1J2EE技术简介
J2EE:
Java2平台企业版(Java2Platform,EnterpriseEdition)。
J2EE是一套全然不同于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。
J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,企业内部或外部难以互通的窘境。
J2EE为搭建具有可伸缩性、灵活性、易维护性的商务系统提供了良好的机制,其优点主要表现在:
A)高效的开发。
J2EE允许公司把一些通用的、很繁琐的服务端任务交给中间供应商去完成。
这样开发人员可以集中精力在如何创建商业逻辑上,相应地缩短了开发时间。
B)支持异构环境。
J2EE能够开发部署在异构环境中的可移植程序。
基于J2EE的应用程序不依赖任何特定操作系统、中间件、硬件。
C)可伸缩性。
J2EE领域的供应商提供了更为广泛的负载平衡策略。
能消除系统中的瓶颈,允许多台服务器集成部署。
这种部署可达数千个处理器,实现可高度伸缩的系统,满足未来商业应用的需要。
D)稳定的可用性。
2.2JavaRMI简介
RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(JavaRemoteMethodProtocol),支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。
它为采用Java对象的分布式计算提供了简单而直接的途径。
这些对象可以是新的Java对象,也可以是围绕现有API的简单的Java包装程序。
Java体现了“编写一次就能在任何地方运行的模式。
而RMI可将Java模式进行扩展,使之可在任何地方运行”。
JavaRMI的设计思路给程序设计带来极大的方便,同时在大型系统的服务器端开发极为重要,这为服务器的分布式扩展提供了一种思路和解决方案。
三、
JavaRMI技术
为了详细说明JavaRMI技术,以下从三个方面对其进行详细介绍。
3.1RMI的运行机制
RMI应用程序通常包括两个独立的程序:
服务器程序和客户机程序。
典型的服务器应用程序将创建多个远程对象,使这些远程对象能够被引用,然后等待客户机调用这些远程对象的方法。
而典型的客户机程序则从服务器中得到一个或多个远程对象的引用,然后调用远程对象的方法。
RMI为服务器和客户机进行通信和信息传递提供了一种机制。
在与远程对象的通信过程中,RMI使用标准机制:
stub和skeleton。
远程对象的stub担当远程对象的客户本地代表或代理人角色。
调用程序将调用本地stub的方法,而本地stub将负责执行对远程对象的方法调用。
在RMI中,远程对象的stub与该远程对象所实现的远程接口集相同。
调用stub的方法时将执行下列操作:
A)初始化与包含远程对象的远程虚拟机的连接;
B)对远程虚拟机的参数进行编组(写入并传输);
C)等待方法调用结果;
D)解编(读取)返回值或返回的异常;
E)将值返回给调用程序。
为了向调用程序展示比较简单的调用机制,stub将参数的序列化和网络级通信等细节隐藏了起来。
在远程虚拟机中,每个远程对象都可以有相应的skeleton(在JDK1.2环境中无需使用skeleton)。
Skeleton负责将调用分配给实际的远程对象实现。
它在接收方法调用时执行下列操作:
A)解编(读取)远程方法的参数;
B)调用实际远程对象实现上的方法;
C)将结果(返回值或异常)编组(写入并传输)给调用程序。
stub和skeleton由rmic编译器生成。
利用RMI编写分布式对象应用程序需要完成以下工作:
A)定位远程对象。
应用程序可使用两种机制中的一种得到对远程对象的引用。
它既可用RMI的简单命名工具rmiregistry来注册它的远程对象,也可以将远程对象引用作为常规操作的一部分来进行传递和返回。
B)与远程对象通信。
远程对象间通信的细节由RMI处理,对于程序员来说,远程通信看起来就像标准的Java方法调用。
C)给作为参数或返回值传递的对象加载类字节码。
因为RMI允许调用程序将纯Java对象传给远程对象,所以,RMI将提供必要的机制,既可以加载对象的代码又可以传输对象的数据。
在RMI分布式应用程序运行时,服务器调用注册服务程序以使名字与远程对象相关联。
客户机在服务器上的注册服务程序中用远程对象的名字查找该远程对象,然后调用它的方法。
3.2RMI的组成
一个正常工作的RMI系统由下面几个部分组成:
A)远程服务的接口定义;
B)远程服务接口的具体实现;
C)桩(Stub)和框架(Skeleton)文件;
D)一个运行远程服务的服务器;
E)一个RMI命名服务,它允许客户端去发现这个远程服务;
F)类文件的提供者(一个HTTP或者FTP服务器);
G)一个需要这个远程服务的客户端程序。
3.3RMI的原理
如下图3.1所示:
图3.1RMI原理图
方法调用从客户对象经占位程序(Stub)、远程引用层(RemoteReferenceLayer)和传输层(TransportLayer)向下,传递给主机,然后再次经传输层,向上穿过远程调用层和骨干网(Skeleton),到达服务器对象。
占位程序扮演着远程服务器对象的代理的角色,使该对象可被客户激活。
远程引用层处理语义、管理单一或多重对象的通信,决定调用是应发往一个服务器还是多个。
传输层管理实际的连接,并且追追踪可以接受方法调用的远程对象。
服务器端的骨干网完成对服务器对象实际的方法调用,并获取返回值。
返回值向下经远程引用层、服务器端的传输层传递回客户端,再向上经传输层和远程调用层返回。
最后,占位程序获得返回值。
四、
编程实现
4.1实现的大致步骤
根据3.3中的RMI原理介绍,已知实现RMI,需要进行以下几个步骤:
A)生成一个远程接口;
B)实现远程对象(服务器端程序);
C)生成占位程序和骨干网(服务器端程序);
D)编写服务器程序;
E)编写客户程序;
F)注册远程对象;
G)启动远程对象。
4.2具体实现
下面具体以一个简单的实例和运行结果来展示RMI的用途和效果。
示例展示的是利用远程的服务器作四则运算,然后将接反返回到客户端并打印出来。
4.2.1定义并实现远程接口
A)定义远程接口
远程接口中定义了四则运算中加、减、乘、除的接口方法。
代码如下图4.1所示:
图4.1定义远程接口
B)实现远程接口
先建ArithmeticRemoteImpl类,继承UnicastRemoteObject,实现4.2.1中实现的远程接口,并实现其中的接口方法。
如下图4.2所示:
图4.2实现远程接口及方法
4.2.2编写服务器端
在本例子中通过RemoteServer来创建一个远程对象的实例,并通过java.rmi.registry.LocateRegistry类的createRegistry()方法从指定端口号启动注册服务程序。
于此同时,必须将远程对象名字绑定到对远程对象的引用上。
代码如下图4.3所示:
图4.3服务器端代码
4.2.3编写客户端
客户端主要功能有两个,一是通过Naming.lookup方法来构造注册服务程序stub程序实例,二是调用服务器远程对象上的远程方法。
代码如下图4.4所示:
图4.4客户端代码
4.2.4运行结果
最后编译并运行代码。
在编译的过程,先使用javac编译器编译四个Java程序,得到相应的class文件,然后用rmic编译器为远程对象创建存根(Stub)和骨架(Skeleton),用rmic编译器编译刚生成的类文件,即会在相应目录下生成相应的class文件,它们分别对应存根和骨架。
最后运行服务器端程序和客户端程序便可得到结果。
或者可以直接用Eclipse先运行4.2.2服务器端程序,然后运行4.2.3客户端程序,各自运行结果如下图4.5和4.6所示:
图4.5服务器端运行结果
图4.5客户端运行结果
五、结论
从上面的过程可以看到一个完整的基于JavaRMI技术的分布式应用,虽然本文中的例子是一个比较简单的四则运算,但这个例子解释了JavaRMI的实现方式,以及JavaRMI的运行原理和效果。
可以设想在一个超大计算量的的程序中,如果使用单机运行的方式,可能会需要很长的反应时间;但是如果将这个程序分成几个独立的平均的计算过程,然后将它们分布到多个计算机中进行运算,运算完成之后将运算结果通过网络发送到本机。
在这种计算量远大于网络传输延迟的情况下,分布式计算将带来极大的效率提高。
参考文献
[1]编程思想ThinkinginJava4thBruceEckel著北京:
机械工业出版社,2007
[2]精通RMIjingtongrmi:
Java与EJB企业级应用开发Oberg,Rickard著北京:
机械工业出版社,2003
[3]分布式操作系统AndrewS.Tanenbaum著北京:
电子工业出版社,2008
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分布式计算机系统论文J2EE RMI技术 分布式 计算机系统 论文 J2EE RMI 技术