RMI (Remote Method Invocation) 远程方法调用,可以认为是RPC的Java版本,使用 RMI 技术可以使一个Java 虚拟机中的对象,调用另一个Java 虚拟机中的对象方法并获取调用结果。
使用的是JRMP(Java Remote Messaging Protocol)协议,JRMP是专门为Java定制的通信协议,所以是纯Java的分布式解决方案,对用非Java语言开发的应用系统的支持不足,不能与用非Java语言书写的对象进行通信。
RMI 在编写一个接口需要作为远程调用时,都需要继承了Remote,Remote 接口用于标识其方法可以从非本地虚拟机上调用的接口,只有在“远程接口”(扩展java.rmi.Remote
的接口)中指定的这些方法才可远程使用。
那么我们要如何来使用RMI,其主要的使用步骤如下:
- 创建一个远程接口,并继承
java.rmi.Remote
接口 - 实现远程接口,并且继承 UnicastRemoteObject
- 创建服务器程序,同时使用 createRegistry 方法注册远程接口对象
- 创建客户端程序,通过 Naming 类的 lookup 方法来远程调用接口中的方法
1、创建一个远程接口,并继承 java.rmi.Remote 接口
package com.rockvine.rmi.server;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface RmiDemoService extends Remote {
String sayHello(String name) throws RemoteException;
}
该接口必须继承Remote接口,并且所有方法需要抛出RemoteException
异常,另外所有参数和返回类型必须序列化(要进行网络传输)。