RMI-Exercise

阅读时长: 2 分钟 583 字

Java RMI,即 远程方法调用(Remote Method Invocation),它的实现依赖于Java虚拟机(JVM),RMI允许在一个Java虚拟机中运行的对象调用在另一个Java虚拟机中运行的对象上的方法。RMI是Java的一组拥护开发分布式应用程序的API,RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol),RMI能直接传输序列化后的Java对象和分布式垃圾收集,因此它仅支持从一个JVM到另一个JVM的调用。RMI提供了用Java编程语言编写的程序之间的远程通信。

这是一个RMI(Remote Method Invocation)远程方法调用的练习程序。

\--rmi
    RemoteService.java
    RMIClient.java
    RMIServer.java
    RMIService.java

RemoteService.java

一个远程接口文件,它定义了可以被远程调用的方法。

RMIService.java

远程服务的实现类。继承了UnicastRemoteObject类,这是RMI中实现远程对象的基类。实现了RemoteService接口,提供了run()方法的具体实现

RMIClient.java

RMI客户端程序。定义了与服务器相同的注册表端口(9999)、主机(localhost)和服务URL。在main方法中使用Naming.lookup查找远程服务对象,将返回的对象强制转换为RemoteService接口类型,然后调用远程服务的run()方法。

RMIServer.java

RMI服务器程序。定义了RMI注册表端口(9999)、主机(localhost)和服务URL。在main方法中创建RMIService实例作为远程服务实现,然后使用LocateRegistry.createRegistry创建RMI注册表,并使用Naming.rebind将远程服务绑定到命名服务。

总结

RMI的实现较为简单便捷,只需要在服务端创建实例、创建注册表、绑定远程服务到命名服务即可。在客户端使用Naming.lookup查找远程服务对象,将返回的对象强制转换为RemoteService接口类型即可直接调用。

RMI本质上只传输方法调用的参数和返回值。当你在远程对象的方法中执行System.out.println()时,这些输出会打印在远程JVM的终端/日志中,而不是调用方的控制台。这是因为System.out是本地进程的标准输出流,与RMI调用无关。

本网站已运行: 计算中...
备案 赣公网安备36072502000191 | 赣ICP备2024040374号
使用 Hugo 构建 · 主题 Stack 由 Jimmy 设计