J2EE之RMI

概念

           Java Remote Method Invocation ( RMI -- Java远程方法调用)允许您使用Java编写分布式对象,不同的Java虚拟机(JVM)之间进行对象间的通讯。这些JVM可以在一台者多台计算机上,使得应用程序(Application)可以远程调用方法,共享各个系统的资源和处理能力。RMI为采用Java对象的分布式计算提供了简单而直接的途径。它将Java的安全性和可移植性等强大功能带给了分布式计算。

   

RMI远程调用步骤:

 

  1.客户对象调用客户端辅助对象上的方法

 

  2.客户端辅助对象打包调用信息(变量,方法名),通过网络发送给服务端辅助对象

 

  3.服务端辅助对象将客户端辅助对象发送来的信息解包,找出真正被调用的方法以及该方法所在对象

 

  4.调用真正服务对象上的真正方法,并将结果返回给服务端辅助对象

 

  5.服务端辅助对象将结果打包,发送给客户端辅助对象

 

  6.客户端辅助对象将返回值解包,返回给客户对象

 

  7.客户对象获得返回值

优缺点

 优点

  面向对象:  

  RMI可将完整的对象作为参数和返回值进行传递,而不仅仅是预定义的数据类型。对象传递功能使您可以在分布式计算中充分利用面向对象技术的强大功能。您可以将类似Java HashTable这样的复杂类型作为一个参数进行传递。而在目前的RPC系统中,您只能依靠客户机将此类对象分解成基本数据类型,然后传递这些数据类型,最后在服务器端重新创建对象。  

  可移动属性:  

  RMI可将属性(类实现程序)从客户机移动到服务器,或者从服务器移到客户机。例如,您可以定义一个检查雇员开支报告的接口,以便察看雇员是否遵守了公司目前实行的政策。在开支报告创建后,客户机就会从服务器端获得实现该接口的对象。如果Policy发生变化,服务器端就会开始返回使用了新政策的该接口的另一个实现程序。您不必在用户系统上安装任何新的软件.

  安全:  

  RMI使用Java内置的安全机制保证下载执行程序时用户系统的安全。 RMI使用专门为保护系统免遭恶意小应用程序侵害而设计的安全管理程序,可保护您的系统和网络免遭潜在的恶意下载程序的破坏。在情况严重时,服务器可拒绝下载任何执行程序。  

  便于编写和使用:  

  RMI使得Java远程服务程序和访问这些服务程序的Java客户程序的编写工作变得轻松、简单。服务程序大约用三行指令宣布本身是服务程序,其它方面则与任何其它Java对象类似。  

  可连接现有/原有的系统:  

  RMI可通过Java的本机方法接口JNI与现有系统进行进行交互。利用RMI和JNI,您就能用Java语言编写客户端程序,还能使用现有的服务器端程序。在使用RMI/JNI与现有服务器连接时,您可以有选择地用Java重新编写服务程序的任何部分,并使新的程序充分发挥Java的功能。类似地,RMI可利用JDBC、在不修改使用数据库的现有非Java源代码的前提下与现有关系数据库进行交互。

  分布式垃圾收集:  

  RMI采用其分布式垃圾收集功能收集不再被网络中任何客户程序所引用的远程服务对象。与Java虚拟机内部的垃圾收集类似,分布式垃圾收集功能允许用户根据自己的需要定义服务器对象,并且明确这些对象在不再被客户机引用时会被删除。

  并行计算:  

  RMI采用多线程处理方法,可使您的服务器利用这些Java线程更好地并行处理客户端的请求。 Java分布式计算解决方案:RMI从JDK 1.1开始就是Java平台的核心部分,因此,它存在于任何一台Java虚拟机中。所有RMI系统均采用相同的公开协议,所以,所有Java系统均可直接相互对话,而不必事先对协议进行转换。

  缺点:

  代码依赖于ip与端口

  RMI依赖于Java远程消息交换协议JRMP(JavaRemote Messaging Protocol),该协议为java定制,要求服务端与客户端都为java编写。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值