Java的远程方法调用 (RMI) 应用程序接口(API)可以让客户机和服务器通过网络通信。通常情况下,客户机程序发送请求到服务器程序,服务器程序响应这些请求。
一个常见的例子是在网络上共享一个字处理程序。字处理程序安装在服务器上,任何打算使用该程序的用户可以在自己的机器上双击位于桌面上的字处理程序的图标,或者在命令行键入运行该程序的命令。调用方发送一个请求到服务器程序,以便访问该字处理软件,服务器程序响应之后,使得该软件可以被请求方得到。
RMI API可以让你创建一个公共可访问的远程服务器对象,该对象可以让客户和服务器进行通信,方式是通过对服务器对象的简单方法的调用。客户可以容易地直接同服务器对象进行直接或者间接的通信,方式是使用URL和HTTP。
本节课将向大家介绍如何使用RMI API来建立客户机和服务器的通信。
关于例子
本节课把第六课中的文件输入和输出的应用程序例子进行改写为在RMI API方式下进行。
要完成的任务
RMIClient1程序表示一个简单的用户界面,用户可以输入文本,一旦点击了Click Me按钮,该本文就通过远程服务器对象被发送给RMIClient2程序。一旦你点击RMIClient2程序中的Click
Me按钮时,就显示出从RMIClient1发来的文本。

Client 1的第一个实例
如果你启动了RMIClient1的第二个实例,并输入了一些文本,一旦点击Click Me按钮,该文本就被发送到RMIClient2程序中。要查看RMIClient2所接收到的文本内容,只需点击RMIClient2程序中的Click
Me 按钮。

Client 1的第二个实例
文件总览
这个例子程序由RMIClient1程序,远程对象和接口,RMIClient2程序组成,如下图所示。每个程序的相应的源代码的链接也如下所示。

除此之外,下面的java.policy安全政策文件规定了运行该例子所需的有关权限。
grant {
permission java.net.SocketPermission "*:1024-65535","connect,accept,resolve";
permission java.net.SocketPermission "*:80","connect";
permission java.awt.AWTPermission "accessEventQueue";
permission java.awt.AWTPermission "showWindowWithoutWarningBanner";
}; |