请教一个关于java教程 rmi远程调用 传递自定义对象的问题

RMI使用java教程语言接口定义了远程对潒它集合了java教程序列化和java教程远程方法协议(java教程 Remote Method Protocol)。简单地说这样使原先的程序在同一操作系统的方法调用,变成了不同操作系统之间程序的方法调用由于J2EE...

RMI是分布式对象软件包它简化了茬多台计算机上的java教程应用之间的通信。

这是一个使用工具维护文本名和远程对象之间的映射,可以进行远程访问

这两个虚拟机可以是运行在相同計算机上的不同进程中也可以是运行在网络上的不同计算机中。

Invocation)是java教程编程语言里一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象远程方法调用特性使java教程编程人员能够在网络环境中分布操作。RMI全部的宗旨就昰尽可能简化远程接口对象的使用
       而RPC是远程过程调用(Remote Procedure Call)可以用于一个进程调用另一个进程(很可能在另一个远程主机上)中的过程,從而提供了过程的分布能力java教程 的 RMI 则在 RPC 的基础上向前又迈进了一步,即提供分布式对象间的通讯

这一部分的功能在RMI开发中对程序员是透明的。Stub为客户端编码远程命令并把他们发送到服务器而Skeleton则是把远程命令解码,调用服务端的远程对象的方法把结果在编码发给stub,然後stub再解码返回调用结果给客户端

     RMI 框架的基本原理大概如下图,应用了代理模式来封装了本地存根与真实的远程对象进行通信的细节

大致說来创建一个RMI应用包括以下步骤:

        远程类就是远程对象所属的类。RMI规范要求远程类必须实现一个远程接口此外,为了使远程类的实例變成能为远程客户提供服务的远程对象可通过以下两种途径之一把它导出(export)为远程对象
 (a)
导出为远程对象的第一种方式:使远程类实現远程接口时,同时继承java教程.rmi.server.UnicastRemoteObject类并且远程类的构造方法必须声明抛出RemoteException。这是最常用的方式下面的本例子就采取这种方式。

 exportObject(Remote obj, int port)该方法负責把参数obj指定的对象导出为远程对象,使它具有相应的存根(Stub)并监听远程客户的方法调用请求;参数port指导监听的端口,如果值为0表礻监听任意一个匿名端口。
(3)创建服务器程序:创建远程对象在rmiregistry注册表中注册远程对象,并绑定到指定的URL中

       RMI采用一种命名服务机制來使得客户程序可以找到服务器上的一个远程对象。在JDK的安装目录的bin子目录下有一个rmiregistry.exe程序它是提供命名服务的注册表程序。

(4)创建客戶程序:通过 lookup()方法查找远程对象进行远程方法调用

       在java教程中,只要一个类extends了java教程.rmi.Remote接口即可成为存在于服务器端的远程对象, 供客户端訪问并提供一定的服务java教程Doc描述:Remote 接口用于标识其方法可以从非本地虚拟机上调用的接口。任何远程对象都必须直接或间接实现此接口只有在“远程接口”  (扩展 java教程.rmi.Remote 的接口)中指定的这些方法才可被远程调用。注意:接口中需要被远程调用的方法必须抛出RemoteException异常。

我要回帖

 

随机推荐