📅  最后修改于: 2023-12-03 14:42:59.347000             🧑  作者: Mango
远程方法调用(Remote Method Invocation,简称RMI)是一种通信机制,它使得在Java平台上,不同进程之间可以相互调用对象的方法。
RMI(Remote Method Invocation)基于Java Remote Method Protocol(JRMP)实现,主要包含以下几个概念:
以下示例演示了如何创建一个简单的RMI服务,并使用RMI客户端调用该服务:
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
public class RMIServer implements RMIServerInterface {
public RMIServer() throws RemoteException {
super();
}
@Override
public String getMessage() throws RemoteException {
return "Hello, World!";
}
public static void main(String[] args) throws Exception {
System.setProperty("java.rmi.server.hostname", "localhost");
Registry registry = LocateRegistry.createRegistry(1099);
RMIServer obj = new RMIServer();
RMIServerInterface stub = (RMIServerInterface) UnicastRemoteObject.exportObject(obj, 0);
registry.bind("RMIServer", stub);
System.out.println("RMIServer bound");
}
}
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface RMIServerInterface extends Remote {
String getMessage() throws RemoteException;
}
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class RMIClient {
public static void main(String[] args) throws Exception {
String host = "localhost";
Registry registry = LocateRegistry.getRegistry(host);
RMIServerInterface stub = (RMIServerInterface) registry.lookup("RMIServer");
String message = stub.getMessage();
System.out.println(message);
}
}
在上述示例代码中,服务端代码实现了一个简单的远程服务,客户端代码远程调用该服务。运行代码后,会输出 "Hello, World!",表示调用成功。
RMI是一种通信机制,它可以使Java平台上不同进程之间相互调用对象的方法。要实现RMI服务,需要实现远程对象和远程接口,以及使用RMI注册表将远程对象绑定到名字上。然后,客户端可以通过查找远程对象的名字来调用远程方法。如果调用成功,客户端将得到相应的返回值。