如何在Java中通过远程方法发送数据?


RMI 代表 **远程方法调用**。它是一种机制,允许驻留在一个系统(JVM)中的对象访问/调用在另一个 JVM 上运行的对象。

RMI 用于构建分布式应用程序;它提供 Java 程序之间的远程通信。它位于 **java.rmi** 包中。

要编写一个 RMI Java 应用程序,您需要按照以下步骤操作:

步骤1 - 定义远程接口

远程接口提供了特定远程对象的所有方法的描述。客户端通过此远程接口进行通信。因此,您需要创建一个扩展预定义接口 java.rmi.Remote 的接口。

示例

import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Hello extends Remote {
   void printMsg() throws RemoteException;
}

步骤 2 - 开发实现类(远程对象)

我们需要实现前面步骤中创建的远程接口。(我们可以单独编写一个实现类,或者可以直接让服务器程序实现此接口。)因此,为远程接口的所有抽象方法提供实现。

示例

public class ImplExample implements Hello {
   public void printMsg() {
      System.out.println("This is an example RMI program");
   }
}

步骤3 - 开发服务器程序

RMI 服务器程序应该实现远程接口,或者扩展实现类。在这里,我们应该创建一个远程对象并将其绑定到 **RMIregistry**。因此,开发如下所示的服务器程序:

示例

import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class Server extends ImplExample {
   public Server() {}
   public static void main(String args[]) {
      try {
         ImplExample obj = new ImplExample();
         Hello stub = (Hello) UnicastRemoteObject.exportObject(obj, 0);
         Registry registry = LocateRegistry.getRegistry();
         registry.bind("Hello", stub);
         System.err.println("Server ready");
      } catch (Exception e) {
         System.err.println("Server exception: " + e.toString());
         e.printStackTrace();
      }
   }
}

步骤4 - 开发客户端程序

在其中编写一个客户端程序,获取远程对象并使用此对象调用所需的方法。

示例

import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class Client {
   private Client() {}
   public static void main(String[] args) {
      try {
         Registry registry = LocateRegistry.getRegistry(null);
         Hello stub = (Hello) registry.lookup("Hello");
         stub.printMsg();
      } catch (Exception e) {
         System.err.println("Client exception: " + e.toString());
         e.printStackTrace();
      }
   }
}

步骤5 - 编译应用程序

要编译应用程序:

  • 编译远程接口。

  • 编译实现类。

  • 编译服务器程序。

  • 编译客户端程序。

步骤6 - 执行应用程序

  • 使用以下命令启动 **rmi** 注册表。

Start rmiregistry

            这将在一个单独的窗口中启动 **rmi** 注册表。

  • 运行服务器类文件,如下所示:

  • 运行客户端类文件,如下所示:

  • **验证** - 一旦您启动客户端,您将在服务器中看到以下输出。

更新于: 2019年10月14日

565 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告