java RMI

来源:互联网 发布:淘宝店铺的仓库在哪里 编辑:程序博客网 时间:2024/05/17 22:13

背景:

        分布式系统要求运行在不同的地址空间、不同的主机,并且能够通信。java提供了sockets来提供最基本的通信,作为最基本的通信机制,它是灵活的、足够的。然而sockets要求client和server工作在应用层协议上,通过编解码消息来通信,而且设计协议弄不好还容易出错。

        Remote Procedure Call (RPC)是sockets的一种替代方案,它将通信接口抽象成过程调用,参数被打包发送到被调用的远程目标上执行。RPC系统使用外部数据表示如XDR来编码参数和返回值。

        然而,在分布式对象系统上RPC并不是很好。不同的地址空间程序级对象之间通信是必要的。为了满足对象的调用,分布式系统要求远程方法调用或者称之为RMI,在这样的系统中,一个本地的代理(stub)管理着对远程对象的调用。

        java‘RMI能充分的利用java语言的面向对象的特性。


简介:

           RMI,全拼Remote Method Invocation。通过RMI的这种机制可以实现一个Java虚拟机上的对象来调用另一个Java虚拟机上对象的方法,虽然前者并没有实现该方法。任何以这种调用方式的对象都必须实现Remote接口,虽然Remote接口中没有定义任何方法。当某个对象被远程调用时,它的参数会被编列(marshalled)并从调用的jvm发送到被调用的jvm,在别调用的jvm上参数又会被解编列(unmarshalled)。当方法执行完成时,执行结果被编列并从被调用的jvm上发送到调用该方法的jvm上。如果方发执行结果出了异常,异常会被发给调用者。取代了直接去操作sockets,使得有一种调用本地程序的错觉


分布式对象应用程序:

         RMI程序通常分为两部分:server和client。server构造一些远程对象,使它们的引用能被访问,等待client调用它们的方法。client得到一些server上远程对象的引用,调用它们的方法。

          应用程序要求:

          a。定位远程对象

         b。和远程对象通信。

          c。加载类字节码(要被作为参数的对象或得到的对象类型的返回值)


原创粉丝点击